python, openFrameworks (c ++)

Exécutez python dans openFrameworks (c ++).

Cet article est juste un mémorandum personnel que j'ai essayé l'article du grand pionnier.

Cet article est extrait de l'article de @ Hzikajr qui vient d'être publié. http://qiita.com/Hzikajr/items/afe73cb287af5ab90265 est. Vous devriez certainement le lire plutôt que mon article comme celui-ci. Ou plutôt lisez-le. Il n'y a pas de points importants dans cet article.

pyenv mentionné ici: http://www.python-izm.com/contents/basis/pyenv.shtml

J'ai personnellement eu du mal avec la coopération entre python et oF, donc c'était très utile. Le test est exactement dans le même environnement que @Hzikajr. ofxPy de satoruhiga https://github.com/satoruhiga/ofxPy J'ai également essayé certains des exemples de.

bin/data/python/test_script.py


print('hello from test_script.py')

def my_fn():
	print ('hello from python function')

def my_fn2(theta):
	import math
	a = math.sin(theta * math.pi)
	return a

def get_random():
	import random
	return (random.random(), random.random())

def size_expression(t):
	import math
	return abs(math.sin(t * math.pi) + math.sin(t * math.pi * 1.5))

ofApp.h


#pragma once

#include "ofMain.h"
#include "ofxPy.h"

class ofApp : public ofBaseApp{

	public:
		void setup();
		void update();
		void draw();

		void keyPressed(int key);
		void keyReleased(int key);
		void mouseMoved(int x, int y );
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void mouseEntered(int x, int y);
		void mouseExited(int x, int y);
		void windowResized(int w, int h);
		void dragEvent(ofDragInfo dragInfo);
		void gotMessage(ofMessage msg);
		
    ofxPy::Context  python;
};

ofApp.cpp


#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    
    putenv((char *)"PYTHONHOME=/Users/ksumiya/.pyenv/versions/anaconda3-4.3.1");
    python.setup();

    ofSetFrameRate(60);
    ofSetVerticalSync(true);
    ofBackground(0);
    
    // append data/python to PYTHONPATH
    python.appendPath(ofToDataPath("python"));
    
    // import and call python script function
    python.exec("import test_script; test_script.my_fn()");

}

//--------------------------------------------------------------
void ofApp::update(){
    ofSetWindowTitle(ofToString(ofGetFrameRate()));
}

//--------------------------------------------------------------
void ofApp::draw(){
    // get tuple return value
    auto v = python.eval<ofxPy::tuple>("test_script.get_random()");
    
    // unpack and cast array-like object
    float x = ofxPy::get<float>(v, 0) * ofGetWidth();
    float y = ofxPy::get<float>(v, 1) * ofGetHeight();
    ofDrawRectangle(x, y, 10, 10);
    
    // get function and call with argument
    float s = python.eval("test_script.size_expression").call(ofGetElapsedTimef()).cast<float>();
    ofDrawCircle(ofGetMouseX(), ofGetMouseY(), s * 50);

    float a = python.eval("test_script.my_fn2").call(0.25).cast<float>();
    string msg;
    msg += ofToString(1/a) + "\n";
    ofSetColor(255);
    ofDrawBitmapString(msg, 100, 100);

}

J'ai seulement ajouté la partie my_fn2```. En conséquence, puisqu'il est 1 / sin (pi / 4), il devient `sqrt (2)`, et `` 1.414 ... `est affiché.

Pionnier, super ...

Recommended Posts

python, openFrameworks (c ++)
notes de python C ++
Pointeur de modèle d'extension Python C / C ++
Next Python en langage C
API C en Python 3
ABC147 C --HonestOrUnkind2 [Python]
Étendre python en C ++ (Boost.NumPy)
Comparaison de vitesse de Python, Java, C ++
PyTorch C ++ VS Python (édition 2019)
Python
Recherche binaire en Python / C ++
Sélection en plusieurs étapes (C # / Python) (ancien)
J'ai essayé l'extension C de Python
Python lancé par des programmeurs C
Mémorandum ABC [ABC159 C - Volume maximum] (Python)
Résoudre ABC163 A ~ C avec Python
Appeler C depuis Python avec DragonFFI
Créer Awaitable avec l'API Python / C
Sélection en plusieurs étapes (Go / C # / Ruby / Python)
Appeler popcount depuis Ruby / Python / C #
Introduction à Protobuf-c (langage C ⇔ Python)
Aide-mémoire Python (pour les expérimentés C ++)
Résoudre ABC168 A ~ C avec Python
Mémorandum ABC [ABC161 C --Replacing Integer] (Python)
Résoudre ABC036 A ~ C avec Python
Conseils pour appeler Python à partir de C
Exécuter du code Python à partir de l'interface graphique C #
Comment envelopper C en Python
Mémorandum ABC [ABC158 C - Augmentation de la taxe] (Python)
Résolu AtCoder ABC 114 C-755 avec Python3
Un programmeur C / C ++ défie Python (première étape)
Résoudre ABC162 A ~ C avec Python
Exécutez des scripts Python de manière synchrone à partir de C #
Résoudre ABC167 A ~ C avec Python
ABC128 Commentaire A, B, C (python)
Résoudre ABC158 A ~ C avec Python
Explication ABC126 A, B, C (python)
Résoudre ABC037 A ~ C avec Python
Ecrire un test unitaire de langage C en Python
AtCoder Beginner Contest 174 C Problème (Python)
Appeler C / C ++ depuis Python sur Mac
Appeler le langage C depuis Python (python.h)
Comparaison des performances de désérialisation de msgpack (C ++ / Python / Ruby)
python kafka
Les bases de Python ⑤
Résumé Python
Python intégré
Notation d'inclusion Python
Technique Python
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
Python FlowFishMaster
Service Python
astuces python
fonction python ①
Les bases de Python