[PYTHON] Premiers pas avec Processing et p5.js (pour ceux qui ont fait d'autres langues) 02

Qu'est-ce que p5.js

Une bibliothèque javascript (comme) qui peut utiliser le traitement sur le Web Je suis le sauveur des gens qui veulent publier ce qu'ils ont fait avec Processing pour le moment, mais qui ne le peuvent pas.

Python et Flask

Maintenant, écrivez le côté serveur avec Flask of python. Flask est un microframework pour le web fourni pour python. Quoi qu'il en soit, le coût d'introduction est faible. C'est vraiment plus facile à introduire que dj 〇 ngo. C'est vraiment simple. (Bien que le matériau soit vieux et qu'il y ait des pièces ennuyeuses)

Exemple de code

Immédiatement de quelque part ~~ je l'ai eu ~~ je le ferai basé sur le code de référence. C'est une introduction donc je ne toucherai pas aux choses difficiles (car je suis moi-même un débutant)

Le mouvement est le même que celui de l'article précédent.

Code Python

app.py


from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)
@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

(Si vous y réfléchissez, vous n'avez pas besoin d'utiliser python avec cette implémentation ...)

Code HTML

layout.html


<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>p5.js</title>
    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
    <script src="//cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.8/p5.js"></script> <!--Veuillez corriger cela en temps opportun. Que vous le déposiez ou que vous l'utilisiez sur le réseau-->
    <script src="/static/js/kurukuru.js"></script>
    <style type="text/css">
      * {margin: 0;}
      * {padding: 0;}
    </style>
  </head>
  <body>
    {% block content %}{% endblock %}
    <script src="/static/js/jquery.min.js"></script>
    <script src="/static/js/bootstrap.min.js"></script>
  </body>
</html>

index.html


{% extends "layout.html" %}
{% block content %}
  <!-- Form
  ================================================== -->
<div class="form">
  <div class="container-fluid">
    <div class="row">
      <div class="col-md-12">
        <p>
          <div id="p5Canvas">
            <p></p>
          </div>
        </p>
      </div>
    </div>
  </div>
</div>
{% endblock %}

fichier javascript

kurukuru.js


const N = 20;

let p_x = [];
let p_y = [];
let p_pX = [];
let p_pY = [];

let p_distances = [];
let p_gap_theata = [];

let p_colors = [];

let p_frameCount;

function setup(){
  let canvas = createCanvas(windowWidth, windowHeight);
  canvas.parent("p5Canvas");
  background(255);

  colorMode(HSB, 255, 100, 100);

  p_frameCount = 0;
  noStroke();

  for(var i = 0; i < N; i++){
    p_x.push(30);
    p_pX.push(30);
    p_y.push(30);
    p_pY.push(30);
    p_distances.push(random(15, 150));
    p_gap_theata.push(random(-PI, PI));

    p_colors.push(color(random(255), 100, 100));
  }
}
function draw(){
  colorMode(RGB, 255);
  background(255);
  colorMode(HSB, 255, 100, 100);
  for(var i = 0; i < N; i++){
    fill(p_colors[i]);
    let theata = radians(p_frameCount*5.0) + p_gap_theata[i];
    let dist =p_distances[i] + 90.0*noise(theata/1.0, p_frameCount/100.0)
    p_x[i] = (mouseX + dist*cos(theata) + p_pX[i])/2.0;
    p_y[i] = (mouseY + dist*sin(theata) + p_pY[i])/2.0;
    ellipse(p_x[i], p_y[i], 20, 20);
    p_pX[i] = p_x[i];
    p_pY[i] = p_y[i];
  }
  p_frameCount++;
}

function windowResized(){
  resizeCanvas(windowWidth, windowHeight);
}


référence

Je laisse tomber le code de traitement précédent en javascript. Celui qui peut être une variable globale est p_ Cela dépend de ce que vous ressentez, mais si vous êtes familier avec javascript et le traitement, vous vous sentirez à l'aise avec.

let canvas = createCanvas(windowWidth, windowHeight);
canvas.parent("p5Canvas");

Je pense que c'est la clé. Quand j'étais dans Processing.js, je pense que c'était un peu plus difficile de remplir l'écran, mais p5.js est fluide. Vous pouvez également spécifier l'ID du canevas à afficher. Si le canevas existe sans cela, il lui sera associé normalement. URL de référence

Cependant, lorsque la taille de l'écran est modifiée, la zone d'affichage ne change pas à la taille d'origine.

function windowResized(){
  resizeCanvas(windowWidth, windowHeight);
}

Ajoute ça. URL de référence

Vous pouvez également utiliser mouseX, ʻelipse et colorMode`. Ça m'a l'air bien.

** Les personnes d'autres bibliothèques js ne peuvent pas y être habituées, mais si vous n'initialisez pas l'écran (bacground) dans draw, le dessin précédent restera. ** **

Si vous voulez initialiser le dessin, mais que vous voulez garder le dessin derrière le canevas, vous pouvez concevoir background. Lors de la saisie de 4 variables

background(r, g, b, α)

Par conséquent, vous devriez pouvoir modifier la condition restante du dessin précédent en fonction de la valeur de α. (J'ai perdu le code que j'ai essayé)

Conclusion

Amusant

prime

Avant p5.js, il y avait quelque chose qui s'appelait Processing.js. Dans Processing.js, vous pouvez utiliser le code de traitement tel quel.

Je pense que personne ne l'obtiendra, mais je vais le laisser.

index.html


<!DOCTYPE html>
    <head>
       <script src="processing.js"></script>
       <script>
         window.onload = function(){
           var canvas = document.getElementsByTagName('canvas')[0];
           var codeElm = document.getElementById('processing-code');
           var code = codeElm.textContent || codeElm.innerText;

           new Processing(canvas, code);
         };
       </script>
       <script id="processing-code" type="application/processing">
         void setup() {
           size(innerWidth, innerHeight);
           frameRate(20);
         }
         void draw() {
           size(innerWidth, innerHeight);
           background(0, 0);
           ellipse(width/2, height/2, mouseX, mouseY);
         }
       </script>
    </head>
    <body bgcolor="ffccff">
    	<div id="wrapper">
    		<canvas id = "main"></canvas>
    	</div>
    </body>
</html>

main.css


body{
	margin: 0px;
	padding: 0px;
	position: relative;
}

body #wrapper{
	width: 100%;
	height: 100%;
	position: fixed;
}

resize.js


$(function(){
	sizing();
	$(window).resize(function(){
		sizing();
	});
});

function sizing(){
	$("#main").attr({height:$("wrapper").height()});
	$("#main").attr({height:$("wrapper").width()});
}

Le processus de maximisation est effectué dans le dernier fichier js.

Recommended Posts

Premiers pas avec Processing et p5.js (pour ceux qui ont fait d'autres langues) 02
Introduction au traitement et p5.js (pour ceux qui ont fait d'autres langues) 01
Pour ceux qui ont fait des outils de configuration pip
Pour ceux qui veulent apprendre Excel VBA et se lancer avec Python
5 raisons pour lesquelles le traitement est utile pour ceux qui veulent se lancer avec Python
[Pour ceux qui maîtrisent d'autres langages de programmation] 10 points pour rattraper les points Python
Premiers pas avec Python pour les classes PHPer
Premiers pas avec Julia pour Pythonista
Premiers pas avec Python pour les fonctions PHPer
Premiers pas avec Python pour PHPer-Super Basics
Premiers pas avec Lisp pour Pythonista: Supplément
Rejoignez Azure avec Go ~ Pour ceux qui veulent démarrer et connaître Azure avec Go ~
[Résolu] J'ai une question pour ceux qui connaissent la mécanisation de Python.
Démarrer avec Python avec 100 coups sur le traitement du langage
[Français] Premiers pas avec Rust pour les programmeurs Python
Paramètres pour démarrer avec MongoDB avec python
❤️ Blogueurs ❤️ "Beloved BI" ❤️ Commençons ❤️ (pour ceux qui peuvent créer des graphiques avec Python)
Pour ceux qui débutent en programmation mais qui ont décidé d'analyser les données avec Python
Pour ceux qui auraient dû installer janome correctement avec Python mais qui obtiennent une erreur
Premiers pas avec python3 # 2 En savoir plus sur les types et les variables
Premiers pas avec Google App Engine pour Python et PHP
Introduction à l'hypothèse Tensorflow-About et au coût de la régression linéaire
Pour ceux qui veulent écrire Python avec vim
Pour ceux qui obtiennent une erreur de clé: 'length_seconds' sur pytube
Premiers pas avec Android!
1.1 Premiers pas avec Python
Premiers pas avec apache2
Premiers pas avec Python
Premiers pas avec Django 1
Introduction à l'optimisation
Premiers pas avec Numpy
Premiers pas avec Spark
Premiers pas avec Python
Premiers pas avec Pydantic
Premiers pas avec Jython
Premiers pas avec Django 2
Pour ceux qui souhaitent démarrer l'apprentissage automatique avec TensorFlow2
Une procédure de création d'environnement moderne pour ceux qui veulent se lancer immédiatement avec Python