← Retour aux demos

Points contraints — point_sur()

Le builtin point_sur(objet, param) cree un point contraint a glisser le long d'un objet geometrique. Deplacez les points rouges/verts/violets pour les voir glisser sur leur objet parent.


point_sur(segment) — t ∈ [0, 1]

5 points repartis sur le segment AB : t=0 (A), 0.25, 0.5 (milieu), 0.75, 1 (B). Deplacez-les — ils restent contraints au segment. Deplacez A ou B — tous les points suivent.

-4-2246810-2246sABP1P2P3P4P5
Code DSL
A = point(0, 0, couleur="bleu")
B = point(6, 4, couleur="bleu")
s = segment(A, B, couleur="bleu")
P1 = point_sur(s, 0, couleur="rouge")
P2 = point_sur(s, 0.25, couleur="vert")
P3 = point_sur(s, 0.5, couleur="violet")
P4 = point_sur(s, 0.75, couleur="orange")
P5 = point_sur(s, 1, couleur="cyan")

point_sur(droite) — t ∈ ]-∞ ; +∞[

Points sur une droite avec t = -0.5, 0, 0.5, 1, 1.5. Pas de clamping — les points peuvent aller au-dela des points definissants.

-6-4-22468-4-2246dABQ1Q2Q3Q4Q5
Code DSL
A = point(-2, -1, couleur="bleu")
B = point(3, 2, couleur="bleu")
d = droite(A, B, couleur="bleu")
Q1 = point_sur(d, -0.5, couleur="rouge")
Q2 = point_sur(d, 0, couleur="vert")
Q3 = point_sur(d, 0.5, couleur="violet")
Q4 = point_sur(d, 1, couleur="orange")
Q5 = point_sur(d, 1.5, couleur="cyan")

point_sur(demidroite) — t ∈ [0, +∞[

Points sur une demi-droite. t=0 est l'origine, t=1 est le point directeur, t=2 est au-dela. Le clamping empeche d'aller en arriere de l'origine.

-6-4-2246810-4-2246rABR1R2R3R4
Code DSL
A = point(-1, 0, couleur="bleu")
B = point(3, 2, couleur="bleu")
r = demidroite(A, B, couleur="bleu")
R1 = point_sur(r, 0, couleur="rouge")
R2 = point_sur(r, 0.5, couleur="vert")
R3 = point_sur(r, 1, couleur="violet")
R4 = point_sur(r, 2, couleur="orange")

point_sur(cercle) — angle en degres

5 points sur un cercle de rayon 3 : 0° (droite), 45°, 90° (haut), 180° (gauche), 270° (bas). Deplacez-les — ils glissent le long du cercle. Deplacez le centre O — tous les points suivent.

-6-4-2246-4-224OS1S2S3S4S5
Code DSL
O = point(0, 0, couleur="bleu")
c = cercle(O, rayon=3, couleur="bleu")
S1 = point_sur(c, 0, couleur="rouge")
S2 = point_sur(c, 45, couleur="vert")
S3 = point_sur(c, 90, couleur="violet")
S4 = point_sur(c, 180, couleur="orange")
S5 = point_sur(c, 270, couleur="cyan")

point_sur(cercle passant) — cercle par point

Cercle defini par centre O et point passant A (rayon = OA). Deplacez A pour changer le rayon — les points contraints suivent.

-8-6-4-22468-6-4-2246OAS1S2S3
Code DSL
O = point(0, 0, couleur="bleu")
A = point(4, 0, couleur="bleu")
c = cercle(O, passant=A, couleur="bleu")
S1 = point_sur(c, 60, couleur="rouge")
S2 = point_sur(c, 150, couleur="vert")
S3 = point_sur(c, 240, couleur="violet")

point_sur(arc par angles) — t ∈ [0, 1]

Arc de 0° a 120°, rayon 3. Points a t=0, 0.25, 0.5, 0.75, 1. t interpole lineairement l'angle entre debut et fin de l'arc.

-6-4-2246-4-224OT1T2T3T4T5
Code DSL
O = point(0, 0, couleur="bleu")
a = arc(O, rayon=3, debut=0, fin=120, couleur="bleu")
T1 = point_sur(a, 0, couleur="rouge")
T2 = point_sur(a, 0.25, couleur="vert")
T3 = point_sur(a, 0.5, couleur="violet")
T4 = point_sur(a, 0.75, couleur="orange")
T5 = point_sur(a, 1, couleur="cyan")

point_sur(arc par points) — arc(A, O, B)

Arc defini par 3 points : debut A(4,0), centre O(0,0), fin B(0,4). Deplacez A ou B — l'arc et les points contraints se mettent a jour.

-6-4-2246-4-224AOBT1T2T3T4
Code DSL
A = point(4, 0, couleur="bleu")
O = point(0, 0, couleur="bleu")
B = point(0, 4, couleur="bleu")
a = arc(A, O, B, couleur="bleu")
T1 = point_sur(a, 0, couleur="rouge")
T2 = point_sur(a, 0.33, couleur="vert")
T3 = point_sur(a, 0.66, couleur="violet")
T4 = point_sur(a, 1, couleur="orange")

point_sur(courbe) — fonctions y=f(x)

Points glissants sur des courbes de fonctions. Le parametre est la coordonnee x. Bleu : y = x² - 2 | Vert : y = sin(x) | Violet : y = 1/x. Deplacez les points rouges — ils glissent le long de leur courbe.

-8-6-4-22468-6-4-2246fghPQR
Code DSL
f = courbe("y = x^2 - 2", couleur="bleu")
P = point_sur(f, -1.5, couleur="rouge")
g = courbe("y = sin(x)", couleur="vert")
Q = point_sur(g, 1, couleur="rouge")
h = courbe("y = 1/x", couleur="violet")
R = point_sur(h, 0.5, couleur="rouge")

point_sur(conique) — cercle, ellipse, parabole

Points glissants sur des coniques. Pour cercle/ellipse le parametre est en degres. Pour la parabole c'est un parametre brut t. Bleu : cercle x²+y²=9 | Vert : ellipse x²/4+y²/9=1 | Violet : parabole y²=4x.

-8-6-4-22468-6-4-2246c1c2c3P1P2P3P4P5P6
Code DSL
c1 = courbe("x^2 + y^2 - 9 = 0", couleur="bleu")
P1 = point_sur(c1, 30, couleur="rouge")
P2 = point_sur(c1, 150, couleur="rouge")
c2 = courbe("{x^2}/4 + {y^2}/9 - 1 = 0", couleur="vert")
P3 = point_sur(c2, 45, couleur="rouge")
P4 = point_sur(c2, 200, couleur="rouge")
c3 = courbe("y^2 - 4*x = 0", couleur="violet")
P5 = point_sur(c3, 2, couleur="rouge")
P6 = point_sur(c3, -2, couleur="rouge")

Scene combinee

Segment, droite, demi-droite et cercle ensemble. Tous les points rouges sont draggable et contraints a leur objet parent.

-10-8-6-4-2246810-6-4-22468sdrABPCDQOSEFR
Code DSL
A = point(-6, -2, couleur="bleu")
B = point(-2, 2, couleur="bleu")
s = segment(A, B, couleur="bleu")
P = point_sur(s, couleur="rouge")
C = point(0, -2, couleur="vert")
D = point(4, 1, couleur="vert")
d = droite(C, D, couleur="vert")
Q = point_sur(d, 0.5, couleur="rouge")
O = point(5, 2, couleur="violet")
c = cercle(O, rayon=2, couleur="violet")
S = point_sur(c, 45, couleur="rouge")
E = point(-5, 3, couleur="orange")
F = point(-3, 3, couleur="orange")
r = demidroite(E, F, couleur="orange")
R = point_sur(r, 1.5, couleur="rouge")