p5 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/accessibility/color_namer.js +4 -4
- package/dist/accessibility/index.js +4 -4
- package/dist/accessibility/outputs.js +1 -1
- package/dist/app.js +4 -4
- package/dist/color/color_conversion.js +4 -4
- package/dist/color/index.js +1 -1
- package/dist/color/setting.js +1 -1
- package/dist/{constants-C2DVjshm.js → constants-8IpwyBct.js} +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/core/environment.js +1 -1
- package/dist/core/friendly_errors/fes_core.js +1 -1
- package/dist/core/friendly_errors/index.js +1 -1
- package/dist/core/friendly_errors/param_validator.js +1 -1
- package/dist/core/friendly_errors/sketch_verifier.js +1 -1
- package/dist/core/helpers.js +1 -1
- package/dist/core/init.js +4 -4
- package/dist/core/legacy.js +4 -4
- package/dist/core/main.js +4 -4
- package/dist/core/p5.Graphics.js +3 -3
- package/dist/core/p5.Renderer.js +2 -2
- package/dist/core/p5.Renderer2D.js +4 -4
- package/dist/core/rendering.js +3 -3
- package/dist/dom/dom.js +1 -1
- package/dist/dom/index.js +1 -1
- package/dist/dom/p5.Element.js +1 -1
- package/dist/dom/p5.MediaElement.js +1 -1
- package/dist/image/const.js +1 -1
- package/dist/image/filterRenderer2D.js +3 -3
- package/dist/image/image.js +3 -3
- package/dist/image/index.js +3 -3
- package/dist/image/loading_displaying.js +3 -3
- package/dist/image/p5.Image.js +2 -2
- package/dist/io/files.js +3 -3
- package/dist/io/index.js +3 -3
- package/dist/{main-rEhlsQtb.js → main-B3Z63C6j.js} +3 -3
- package/dist/math/Matrices/Matrix.js +1 -1
- package/dist/math/Matrices/MatrixNumjs.js +1 -1
- package/dist/math/index.js +1 -1
- package/dist/math/p5.Matrix.js +1 -1
- package/dist/math/p5.Vector.js +1 -1
- package/dist/math/trigonometry.js +1 -1
- package/dist/{p5.Renderer-DO9wIL55.js → p5.Renderer-DoDzbpcT.js} +1 -1
- package/dist/{rendering-CpHn8PfG.js → rendering-BELwvfI6.js} +3 -3
- package/dist/shape/2d_primitives.js +1 -1
- package/dist/shape/attributes.js +1 -1
- package/dist/shape/curves.js +143 -74
- package/dist/shape/custom_shapes.js +261 -277
- package/dist/shape/index.js +1 -1
- package/dist/type/index.js +2 -2
- package/dist/type/p5.Font.js +2 -2
- package/dist/type/textCore.js +2 -2
- package/dist/webgl/3d_primitives.js +3 -3
- package/dist/webgl/GeometryBuilder.js +1 -1
- package/dist/webgl/ShaderGenerator.js +10 -7
- package/dist/webgl/ShapeBuilder.js +1 -1
- package/dist/webgl/index.js +3 -3
- package/dist/webgl/interaction.js +1 -1
- package/dist/webgl/light.js +3 -3
- package/dist/webgl/loading.js +3 -3
- package/dist/webgl/material.js +3 -3
- package/dist/webgl/p5.Camera.js +3 -3
- package/dist/webgl/p5.Framebuffer.js +3 -3
- package/dist/webgl/p5.Geometry.js +1 -1
- package/dist/webgl/p5.Quat.js +1 -1
- package/dist/webgl/p5.RendererGL.js +3 -3
- package/dist/webgl/p5.Shader.js +3 -3
- package/dist/webgl/p5.Texture.js +3 -3
- package/dist/webgl/text.js +3 -3
- package/lib/p5.esm.js +414 -358
- package/lib/p5.esm.min.js +1 -1
- package/lib/p5.js +414 -358
- package/lib/p5.min.js +1 -1
- package/package.json +1 -1
- package/types/core/main.d.ts +87 -71
- package/types/global.d.ts +87 -71
- package/types/p5.d.ts +87 -71
- package/types/shape/curves.d.ts +130 -56
- package/types/shape/custom_shapes.d.ts +188 -252
package/dist/shape/curves.js
CHANGED
|
@@ -12,7 +12,7 @@ function curves(p5, fn){
|
|
|
12
12
|
* Bézier curves can form shapes and curves that slope gently. They're defined
|
|
13
13
|
* by two anchor points and two control points. Bézier curves provide more
|
|
14
14
|
* control than the spline curves created with the
|
|
15
|
-
* <a href="#/p5/
|
|
15
|
+
* <a href="#/p5/spline">spline()</a> function.
|
|
16
16
|
*
|
|
17
17
|
* The first two parameters, `x1` and `y1`, set the first anchor point. The
|
|
18
18
|
* first anchor point is where the curve starts.
|
|
@@ -462,38 +462,53 @@ function curves(p5, fn){
|
|
|
462
462
|
|
|
463
463
|
/**
|
|
464
464
|
* Draws a curve using a Catmull-Rom spline.
|
|
465
|
-
*
|
|
465
|
+
*
|
|
466
466
|
* Spline curves can form shapes and curves that slope gently. They’re like
|
|
467
|
-
* cables that are attached to a set of points.
|
|
468
|
-
*
|
|
469
|
-
*
|
|
470
|
-
*
|
|
471
|
-
*
|
|
472
|
-
*
|
|
473
|
-
* The next four parameters, `x2`, `y2`, `x3`, and `y3`, set the two anchor
|
|
474
|
-
* points. The anchor points are the start and end points of the curve’s
|
|
475
|
-
* visible segment.
|
|
476
|
-
*
|
|
477
|
-
* The seventh and eighth parameters, `x4` and `y4`, set the last control
|
|
478
|
-
* point. This point isn’t drawn and can be thought of as the curve’s ending
|
|
479
|
-
* point.
|
|
467
|
+
* cables that are attached to a set of points. By default (`ends: INCLUDE`),
|
|
468
|
+
* the curve passes through all four points you provide, in order
|
|
469
|
+
* `p0(x1,y1)` -> `p1(x2,y2)` -> `p2(x3,y3)` -> `p3(x4,y4)`. Think of them as
|
|
470
|
+
* points on a curve. If you switch to `ends: EXCLUDE`, p0 and p3 act
|
|
471
|
+
* like control points and only the middle span `p1->p2` is drawn.
|
|
480
472
|
*
|
|
481
473
|
* Spline curves can also be drawn in 3D using WebGL mode. The 3D version of
|
|
482
474
|
* `spline()` has twelve arguments because each point has x-, y-, and
|
|
483
475
|
* z-coordinates.
|
|
484
476
|
*
|
|
485
477
|
* @method spline
|
|
486
|
-
* @param {Number} x1 x-coordinate of
|
|
487
|
-
* @param {Number} y1 y-coordinate of
|
|
488
|
-
* @param {Number} x2 x-coordinate of
|
|
489
|
-
* @param {Number} y2 y-coordinate of
|
|
490
|
-
* @param {Number} x3 x-coordinate of
|
|
491
|
-
* @param {Number} y3 y-coordinate of
|
|
492
|
-
* @param {Number} x4 x-coordinate of
|
|
493
|
-
* @param {Number} y4 y-coordinate of
|
|
478
|
+
* @param {Number} x1 x-coordinate of point p0.
|
|
479
|
+
* @param {Number} y1 y-coordinate of point p0.
|
|
480
|
+
* @param {Number} x2 x-coordinate of point p1.
|
|
481
|
+
* @param {Number} y2 y-coordinate of point p1.
|
|
482
|
+
* @param {Number} x3 x-coordinate of point p2.
|
|
483
|
+
* @param {Number} y3 y-coordinate of point p2.
|
|
484
|
+
* @param {Number} x4 x-coordinate of point p3.
|
|
485
|
+
* @param {Number} y4 y-coordinate of point p3.
|
|
494
486
|
* @chainable
|
|
495
487
|
*
|
|
496
488
|
* @example
|
|
489
|
+
*
|
|
490
|
+
* <div>
|
|
491
|
+
* <code>
|
|
492
|
+
* function setup() {
|
|
493
|
+
* createCanvas(200, 200);
|
|
494
|
+
* background(240);
|
|
495
|
+
* noFill();
|
|
496
|
+
*
|
|
497
|
+
* stroke(0);
|
|
498
|
+
* strokeWeight(2);
|
|
499
|
+
* spline(40, 60, 100, 40, 120, 120, 60, 140);
|
|
500
|
+
*
|
|
501
|
+
* strokeWeight(5);
|
|
502
|
+
* point(40, 60);
|
|
503
|
+
* point(100, 40);
|
|
504
|
+
* point(120, 120);
|
|
505
|
+
* point(60, 140);
|
|
506
|
+
*
|
|
507
|
+
* describe('A black spline passes smoothly through four points');
|
|
508
|
+
* }
|
|
509
|
+
* </code>
|
|
510
|
+
* </div>
|
|
511
|
+
*
|
|
497
512
|
* <div>
|
|
498
513
|
* <code>
|
|
499
514
|
* function setup() {
|
|
@@ -501,24 +516,27 @@ function curves(p5, fn){
|
|
|
501
516
|
*
|
|
502
517
|
* background(200);
|
|
503
518
|
*
|
|
519
|
+
* // Exclude the ends—skip the outer spans (p0→p1 and p2→p3) so only the middle span (p1→p2) is drawn.
|
|
520
|
+
* splineProperty('ends', EXCLUDE);
|
|
521
|
+
*
|
|
504
522
|
* // Draw a black spline curve.
|
|
505
523
|
* noFill();
|
|
506
524
|
* strokeWeight(1);
|
|
507
525
|
* stroke(0);
|
|
508
526
|
* spline(5, 26, 73, 24, 73, 61, 15, 65);
|
|
509
527
|
*
|
|
510
|
-
* // Draw red spline curves from the
|
|
528
|
+
* // Draw red spline curves from the points.
|
|
511
529
|
* stroke(255, 0, 0);
|
|
512
530
|
* spline(5, 26, 5, 26, 73, 24, 73, 61);
|
|
513
531
|
* spline(73, 24, 73, 61, 15, 65, 15, 65);
|
|
514
532
|
*
|
|
515
|
-
* // Draw the
|
|
533
|
+
* // Draw the points in black.
|
|
516
534
|
* strokeWeight(5);
|
|
517
535
|
* stroke(0);
|
|
518
536
|
* point(73, 24);
|
|
519
537
|
* point(73, 61);
|
|
520
538
|
*
|
|
521
|
-
* // Draw the
|
|
539
|
+
* // Draw the points in red.
|
|
522
540
|
* stroke(255, 0, 0);
|
|
523
541
|
* point(5, 26);
|
|
524
542
|
* point(15, 65);
|
|
@@ -546,14 +564,17 @@ function curves(p5, fn){
|
|
|
546
564
|
*
|
|
547
565
|
* function draw() {
|
|
548
566
|
* background(200);
|
|
549
|
-
*
|
|
567
|
+
*
|
|
568
|
+
* // Exclude the ends—skip the outer spans (p0→p1 and p2→p3) so only the middle span (p1→p2) is drawn.
|
|
569
|
+
* splineProperty('ends', EXCLUDE);
|
|
570
|
+
*
|
|
550
571
|
* // Draw a black spline curve.
|
|
551
572
|
* noFill();
|
|
552
573
|
* strokeWeight(1);
|
|
553
574
|
* stroke(0);
|
|
554
575
|
* spline(x1, y1, 73, 24, 73, 61, 15, 65);
|
|
555
576
|
*
|
|
556
|
-
* // Draw red spline curves from the
|
|
577
|
+
* // Draw red spline curves from the points.
|
|
557
578
|
* stroke(255, 0, 0);
|
|
558
579
|
* spline(x1, y1, x1, y1, 73, 24, 73, 61);
|
|
559
580
|
* spline(73, 24, 73, 61, 15, 65, 15, 65);
|
|
@@ -564,25 +585,25 @@ function curves(p5, fn){
|
|
|
564
585
|
* point(73, 24);
|
|
565
586
|
* point(73, 61);
|
|
566
587
|
*
|
|
567
|
-
* // Draw the
|
|
588
|
+
* // Draw the points in red.
|
|
568
589
|
* stroke(255, 0, 0);
|
|
569
590
|
* point(x1, y1);
|
|
570
591
|
* point(15, 65);
|
|
571
592
|
* }
|
|
572
593
|
*
|
|
573
|
-
* // Start changing the first
|
|
594
|
+
* // Start changing the first point if the user clicks near it.
|
|
574
595
|
* function mousePressed() {
|
|
575
596
|
* if (dist(mouseX, mouseY, x1, y1) < 20) {
|
|
576
597
|
* isChanging = true;
|
|
577
598
|
* }
|
|
578
599
|
* }
|
|
579
600
|
*
|
|
580
|
-
* // Stop changing the first
|
|
601
|
+
* // Stop changing the first point when the user releases the mouse.
|
|
581
602
|
* function mouseReleased() {
|
|
582
603
|
* isChanging = false;
|
|
583
604
|
* }
|
|
584
605
|
*
|
|
585
|
-
* // Update the first
|
|
606
|
+
* // Update the first point while the user drags the mouse.
|
|
586
607
|
* function mouseDragged() {
|
|
587
608
|
* if (isChanging === true) {
|
|
588
609
|
* x1 = mouseX;
|
|
@@ -598,7 +619,10 @@ function curves(p5, fn){
|
|
|
598
619
|
* createCanvas(100, 100);
|
|
599
620
|
*
|
|
600
621
|
* background('skyblue');
|
|
601
|
-
*
|
|
622
|
+
*
|
|
623
|
+
* // Exclude the ends—skip the outer spans (p0→p1 and p2→p3) so only the middle span (p1→p2) is drawn.
|
|
624
|
+
* splineProperty('ends', EXCLUDE);
|
|
625
|
+
*
|
|
602
626
|
* // Draw the red balloon.
|
|
603
627
|
* fill('red');
|
|
604
628
|
* spline(-150, 275, 50, 60, 50, 60, 250, 275);
|
|
@@ -621,7 +645,10 @@ function curves(p5, fn){
|
|
|
621
645
|
*
|
|
622
646
|
* function draw() {
|
|
623
647
|
* background('skyblue');
|
|
624
|
-
*
|
|
648
|
+
*
|
|
649
|
+
* // Exclude the ends—skip the outer spans (p0→p1 and p2→p3) so only the middle span (p1→p2) is drawn.
|
|
650
|
+
* splineProperty('ends', EXCLUDE);
|
|
651
|
+
*
|
|
625
652
|
* // Rotate around the y-axis.
|
|
626
653
|
* rotateY(frameCount * 0.01);
|
|
627
654
|
*
|
|
@@ -640,16 +667,16 @@ function curves(p5, fn){
|
|
|
640
667
|
* @method spline
|
|
641
668
|
* @param {Number} x1
|
|
642
669
|
* @param {Number} y1
|
|
643
|
-
* @param {Number} z1 z-coordinate of
|
|
670
|
+
* @param {Number} z1 z-coordinate of point p0.
|
|
644
671
|
* @param {Number} x2
|
|
645
672
|
* @param {Number} y2
|
|
646
|
-
* @param {Number} z2 z-coordinate of
|
|
673
|
+
* @param {Number} z2 z-coordinate of point p1.
|
|
647
674
|
* @param {Number} x3
|
|
648
675
|
* @param {Number} y3
|
|
649
|
-
* @param {Number} z3 z-coordinate of
|
|
676
|
+
* @param {Number} z3 z-coordinate of point p2.
|
|
650
677
|
* @param {Number} x4
|
|
651
678
|
* @param {Number} y4
|
|
652
|
-
* @param {Number} z4 z-coordinate of
|
|
679
|
+
* @param {Number} z4 z-coordinate of point p3.
|
|
653
680
|
* @chainable
|
|
654
681
|
*/
|
|
655
682
|
fn.spline = function(...args) {
|
|
@@ -664,30 +691,30 @@ function curves(p5, fn){
|
|
|
664
691
|
/**
|
|
665
692
|
* Calculates coordinates along a spline curve using interpolation.
|
|
666
693
|
*
|
|
667
|
-
* `splinePoint()` calculates coordinates along a spline curve using
|
|
668
|
-
*
|
|
694
|
+
* `splinePoint()` calculates coordinates along a spline curve using four
|
|
695
|
+
* points p0, p1, p2, p3. It expects points in the same order as the
|
|
669
696
|
* <a href="#/p5/spline">spline()</a> function. `splinePoint()` works one axis
|
|
670
|
-
* at a time. Passing the
|
|
671
|
-
* calculate the x-coordinate of a point on the curve. Passing the
|
|
672
|
-
*
|
|
697
|
+
* at a time. Passing the points' x-coordinates will
|
|
698
|
+
* calculate the x-coordinate of a point on the curve. Passing the
|
|
699
|
+
* points' y-coordinates will calculate the y-coordinate of a point on
|
|
673
700
|
* the curve.
|
|
674
701
|
*
|
|
675
|
-
* The first parameter, `a`, is the coordinate of
|
|
702
|
+
* The first parameter, `a`, is the coordinate of point p0.
|
|
676
703
|
*
|
|
677
|
-
* The second and third parameters, `b` and `c`, are the coordinates of
|
|
678
|
-
*
|
|
704
|
+
* The second and third parameters, `b` and `c`, are the coordinates of
|
|
705
|
+
* points p1 and p2.
|
|
679
706
|
*
|
|
680
|
-
* The fourth parameter, `d`, is the coordinate of
|
|
707
|
+
* The fourth parameter, `d`, is the coordinate of point p3.
|
|
681
708
|
*
|
|
682
|
-
* The fifth parameter, `t`, is the amount to interpolate along the
|
|
683
|
-
*
|
|
709
|
+
* The fifth parameter, `t`, is the amount to interpolate along the span
|
|
710
|
+
* from p1 to p2. `t = 0` is p1, `t = 1` is p2, and `t = 0.5` is halfway
|
|
684
711
|
* between them.
|
|
685
712
|
*
|
|
686
713
|
* @method splinePoint
|
|
687
|
-
* @param {Number} a coordinate of
|
|
688
|
-
* @param {Number} b coordinate of
|
|
689
|
-
* @param {Number} c coordinate of
|
|
690
|
-
* @param {Number} d coordinate of
|
|
714
|
+
* @param {Number} a coordinate of point p0.
|
|
715
|
+
* @param {Number} b coordinate of point p1.
|
|
716
|
+
* @param {Number} c coordinate of point p2.
|
|
717
|
+
* @param {Number} d coordinate of point p3.
|
|
691
718
|
* @param {Number} t amount to interpolate between 0 and 1.
|
|
692
719
|
* @return {Number} coordinate of a point on the curve.
|
|
693
720
|
*
|
|
@@ -699,7 +726,8 @@ function curves(p5, fn){
|
|
|
699
726
|
*
|
|
700
727
|
* background(200);
|
|
701
728
|
*
|
|
702
|
-
*
|
|
729
|
+
*
|
|
730
|
+
* // Set the coordinates for the curve's four points (p0, p1, p2, p3).
|
|
703
731
|
* let x1 = 5;
|
|
704
732
|
* let y1 = 26;
|
|
705
733
|
* let x2 = 73;
|
|
@@ -747,7 +775,7 @@ function curves(p5, fn){
|
|
|
747
775
|
* function draw() {
|
|
748
776
|
* background(200);
|
|
749
777
|
*
|
|
750
|
-
* // Set the coordinates for the curve's
|
|
778
|
+
* // Set the coordinates for the curve's four points (p0, p1, p2, p3).
|
|
751
779
|
* let x1 = 5;
|
|
752
780
|
* let y1 = 26;
|
|
753
781
|
* let x2 = 73;
|
|
@@ -773,6 +801,7 @@ function curves(p5, fn){
|
|
|
773
801
|
* </code>
|
|
774
802
|
* </div>
|
|
775
803
|
*/
|
|
804
|
+
|
|
776
805
|
fn.splinePoint = function(a, b, c, d, t) {
|
|
777
806
|
const s = this._renderer.states.splineProperties.tightness,
|
|
778
807
|
t3 = t * t * t,
|
|
@@ -790,30 +819,27 @@ function curves(p5, fn){
|
|
|
790
819
|
* Tangent lines skim the surface of a curve. A tangent line's slope equals
|
|
791
820
|
* the curve's slope at the point where it intersects.
|
|
792
821
|
*
|
|
793
|
-
* `splineTangent()` calculates coordinates along a tangent line using
|
|
794
|
-
*
|
|
795
|
-
*
|
|
796
|
-
*
|
|
797
|
-
*
|
|
798
|
-
*
|
|
799
|
-
* the y-coordinate of a point on the tangent line.
|
|
800
|
-
*
|
|
801
|
-
* The first parameter, `a`, is the coordinate of the first control point.
|
|
822
|
+
* `splineTangent()` calculates coordinates along a tangent line using four
|
|
823
|
+
* points p0, p1, p2, p3. It expects points in the same order as the
|
|
824
|
+
* <a href="#/p5/spline">spline()</a> function. `splineTangent()` works one
|
|
825
|
+
* axis at a time. Passing the points' x-coordinates returns the x-component of
|
|
826
|
+
* the tangent vector; passing the points' y-coordinates returns the y-component.
|
|
827
|
+
* The first parameter, `a`, is the coordinate of point p0.
|
|
802
828
|
*
|
|
803
|
-
* The second and third parameters, `b` and `c`, are the coordinates of
|
|
804
|
-
*
|
|
829
|
+
* The second and third parameters, `b` and `c`, are the coordinates of
|
|
830
|
+
* points p1 and p2.
|
|
805
831
|
*
|
|
806
|
-
* The fourth parameter, `d`, is the coordinate of
|
|
832
|
+
* The fourth parameter, `d`, is the coordinate of point p3.
|
|
807
833
|
*
|
|
808
|
-
* The fifth parameter, `t`, is the amount to interpolate along the
|
|
809
|
-
*
|
|
834
|
+
* The fifth parameter, `t`, is the amount to interpolate along the span
|
|
835
|
+
* from p1 to p2. `t = 0` is p1, `t = 1` is p2, and `t = 0.5` is halfway
|
|
810
836
|
* between them.
|
|
811
837
|
*
|
|
812
838
|
* @method splineTangent
|
|
813
|
-
* @param {Number} a coordinate of
|
|
814
|
-
* @param {Number} b coordinate of
|
|
815
|
-
* @param {Number} c coordinate of
|
|
816
|
-
* @param {Number} d coordinate of
|
|
839
|
+
* @param {Number} a coordinate of point p0.
|
|
840
|
+
* @param {Number} b coordinate of point p1.
|
|
841
|
+
* @param {Number} c coordinate of point p2.
|
|
842
|
+
* @param {Number} d coordinate of point p3.
|
|
817
843
|
* @param {Number} t amount to interpolate between 0 and 1.
|
|
818
844
|
* @return {Number} coordinate of a point on the tangent line.
|
|
819
845
|
*
|
|
@@ -821,11 +847,54 @@ function curves(p5, fn){
|
|
|
821
847
|
* <div>
|
|
822
848
|
* <code>
|
|
823
849
|
* function setup() {
|
|
850
|
+
* createCanvas(120, 120);
|
|
851
|
+
* describe('A black spline on a gray canvas. A red dot moves along the curve on its own. A short line shows the tangent direction at the dot.');
|
|
852
|
+
* }
|
|
853
|
+
*
|
|
854
|
+
* function draw() {
|
|
855
|
+
* background(240);
|
|
856
|
+
*
|
|
857
|
+
* const x1 = 15, y1 = 40;
|
|
858
|
+
* const x2 = 90, y2 = 25;
|
|
859
|
+
* const x3 = 95, y3 = 95;
|
|
860
|
+
* const x4 = 30, y4 = 110;
|
|
861
|
+
*
|
|
862
|
+
* noFill();
|
|
863
|
+
* stroke(0);
|
|
864
|
+
* strokeWeight(2);
|
|
865
|
+
* spline(x1, y1, x2, y2, x3, y3, x4, y4);
|
|
866
|
+
*
|
|
867
|
+
* const t = 0.5 + 0.5 * sin(frameCount * 0.03);
|
|
868
|
+
*
|
|
869
|
+
* const px = splinePoint(x1, x2, x3, x4, t);
|
|
870
|
+
* const py = splinePoint(y1, y2, y3, y4, t);
|
|
871
|
+
*
|
|
872
|
+
* let tx = splineTangent(x1, x2, x3, x4, t);
|
|
873
|
+
* let ty = splineTangent(y1, y2, y3, y4, t);
|
|
874
|
+
*
|
|
875
|
+
* const m = Math.hypot(tx, ty) || 1;
|
|
876
|
+
* tx = (tx / m) * 16;
|
|
877
|
+
* ty = (ty / m) * 16;
|
|
878
|
+
*
|
|
879
|
+
* stroke(0);
|
|
880
|
+
* strokeWeight(2);
|
|
881
|
+
* line(px, py, px + tx, py + ty);
|
|
882
|
+
*
|
|
883
|
+
* noStroke();
|
|
884
|
+
* fill('red');
|
|
885
|
+
* circle(px, py, 7);
|
|
886
|
+
* }
|
|
887
|
+
* </code>
|
|
888
|
+
* </div>
|
|
889
|
+
*
|
|
890
|
+
* <div>
|
|
891
|
+
* <code>
|
|
892
|
+
* function setup() {
|
|
824
893
|
* createCanvas(100, 100);
|
|
825
894
|
*
|
|
826
895
|
* background(200);
|
|
827
896
|
*
|
|
828
|
-
* // Set the coordinates for the curve's
|
|
897
|
+
* // Set the coordinates for the curve's four points (p0, p1, p2, p3).
|
|
829
898
|
* let x1 = 5;
|
|
830
899
|
* let y1 = 26;
|
|
831
900
|
* let x2 = 73;
|