@@ -669,6 +669,43 @@ p5.Camera = function(renderer) {
669669 * More information on this function can be found there.
670670 * @method perspective
671671 * @for p5.Camera
672+ * @example
673+ * <div>
674+ * <code>
675+ * // drag the mouse to look around!
676+ *
677+ * let cam;
678+ *
679+ * function setup() {
680+ * createCanvas(100, 100, WEBGL);
681+ * // create a camera
682+ * cam = createCamera();
683+ * // give it a perspective projection
684+ * cam.perspective(PI / 3.0, width / height, 0.1, 500);
685+ * }
686+ *
687+ * function draw() {
688+ * background(200);
689+ * orbitControl();
690+ * normalMaterial();
691+ *
692+ * rotateX(-0.3);
693+ * rotateY(-0.2);
694+ * translate(0, 0, -50);
695+ *
696+ * push();
697+ * translate(-15, 0, sin(frameCount / 30) * 95);
698+ * box(30);
699+ * pop();
700+ * push();
701+ * translate(15, 0, sin(frameCount / 30 + PI) * 95);
702+ * box(30);
703+ * pop();
704+ * }
705+ * </code>
706+ * </div>
707+ * @alt
708+ * two colored 3D boxes move back and forth, rotating as mouse is dragged.
672709 */
673710p5 . Camera . prototype . perspective = function ( fovy , aspect , near , far ) {
674711 this . cameraType = arguments . length > 0 ? 'custom' : 'default' ;
@@ -750,6 +787,41 @@ p5.Camera.prototype.perspective = function(fovy, aspect, near, far) {
750787 * More information on this function can be found there.
751788 * @method ortho
752789 * @for p5.Camera
790+ * @example
791+ * <div>
792+ * <code>
793+ * // drag the mouse to look around!
794+ * // there's no vanishing point
795+ *
796+ * let cam;
797+ *
798+ * function setup() {
799+ * createCanvas(100, 100, WEBGL);
800+ * // create a camera
801+ * cam = createCamera();
802+ * // give it an orthographic projection
803+ * cam.ortho(-width / 2, width / 2, height / 2, -height / 2, 0, 500);
804+ * }
805+ * function draw() {
806+ * background(200);
807+ * orbitControl();
808+ * normalMaterial();
809+ *
810+ * rotateX(0.2);
811+ * rotateY(-0.2);
812+ * push();
813+ * translate(-15, 0, sin(frameCount / 30) * 65);
814+ * box(30);
815+ * pop();
816+ * push();
817+ * translate(15, 0, sin(frameCount / 30 + PI) * 65);
818+ * box(30);
819+ * pop();
820+ * }
821+ * </code>
822+ * </div>
823+ * @alt
824+ * two 3D boxes move back and forth along same plane, rotating as mouse is dragged.
753825 */
754826p5 . Camera . prototype . ortho = function ( left , right , bottom , top , near , far ) {
755827 if ( left === undefined ) left = - this . _renderer . width / 2 ;
@@ -811,6 +883,42 @@ p5.Camera.prototype.ortho = function(left, right, bottom, top, near, far) {
811883 * More information on this function can be found there.
812884 * @method frustum
813885 * @for p5.Camera
886+ * @example
887+ * <div>
888+ * <code>
889+ * let cam;
890+ *
891+ * function setup() {
892+ * x = createCanvas(100, 100, WEBGL);
893+ * setAttributes('antialias', true);
894+ * // create a camera
895+ * cam = createCamera();
896+ * // set its frustum
897+ * cam.frustum(-0.1, 0.1, -0.1, 0.1, 0.1, 200);
898+ * }
899+ *
900+ * function draw() {
901+ * background(200);
902+ * orbitControl();
903+ * strokeWeight(10);
904+ * stroke(0, 0, 255);
905+ * noFill();
906+ *
907+ * rotateY(-0.2);
908+ * rotateX(-0.3);
909+ * push();
910+ * translate(-15, 0, sin(frameCount / 30) * 25);
911+ * box(30);
912+ * pop();
913+ * push();
914+ * translate(15, 0, sin(frameCount / 30 + PI) * 25);
915+ * box(30);
916+ * pop();
917+ * }
918+ * </code>
919+ * </div>
920+ * @alt
921+ * two 3D boxes move back and forth along same plane, rotating as mouse is dragged.
814922 */
815923p5 . Camera . prototype . frustum = function ( left , right , bottom , top , near , far ) {
816924 if ( left === undefined ) left = - this . _renderer . width / 2 ;
@@ -1103,6 +1211,82 @@ p5.Camera.prototype.lookAt = function(x, y, z) {
11031211 * More information on this function can be found there.
11041212 * @method camera
11051213 * @for p5.Camera
1214+ * @example
1215+ * <div>
1216+ * <code>
1217+ * let cam;
1218+ *
1219+ * function setup() {
1220+ * createCanvas(100, 100, WEBGL);
1221+ * // Create a camera.
1222+ * // createCamera() sets the newly created camera as
1223+ * // the current (active) camera.
1224+ * cam = createCamera();
1225+ * }
1226+ *
1227+ * function draw() {
1228+ * background(204);
1229+ * // Move the camera away from the plane by a sin wave
1230+ * cam.camera(0, 0, 20 + sin(frameCount * 0.01) * 10, 0, 0, 0, 0, 1, 0);
1231+ * plane(10, 10);
1232+ * }
1233+ * </code>
1234+ * </div>
1235+ * @alt
1236+ * White square repeatedly grows to fill canvas and then shrinks.
1237+ *
1238+ * @example
1239+ * <div>
1240+ * <code>
1241+ * // move slider to see changes!
1242+ * // sliders control the first 6 parameters of camera()
1243+ *
1244+ * let sliderGroup = [];
1245+ * let X;
1246+ * let Y;
1247+ * let Z;
1248+ * let centerX;
1249+ * let centerY;
1250+ * let centerZ;
1251+ * let h = 20;
1252+ * let cam;
1253+ *
1254+ * function setup() {
1255+ * createCanvas(100, 100, WEBGL);
1256+ * // create a camera
1257+ * cam = createCamera();
1258+ * // create sliders
1259+ * for (var i = 0; i < 6; i++) {
1260+ * if (i === 2) {
1261+ * sliderGroup[i] = createSlider(10, 400, 200);
1262+ * } else {
1263+ * sliderGroup[i] = createSlider(-400, 400, 0);
1264+ * }
1265+ * h = map(i, 0, 6, 5, 85);
1266+ * sliderGroup[i].position(10, height + h);
1267+ * sliderGroup[i].style('width', '80px');
1268+ * }
1269+ * }
1270+ *
1271+ * function draw() {
1272+ * background(60);
1273+ * // assigning sliders' value to each parameters
1274+ * X = sliderGroup[0].value();
1275+ * Y = sliderGroup[1].value();
1276+ * Z = sliderGroup[2].value();
1277+ * centerX = sliderGroup[3].value();
1278+ * centerY = sliderGroup[4].value();
1279+ * centerZ = sliderGroup[5].value();
1280+ * cam.camera(X, Y, Z, centerX, centerY, centerZ, 0, 1, 0);
1281+ * stroke(255);
1282+ * fill(255, 102, 94);
1283+ * box(85);
1284+ * }
1285+ * </code>
1286+ * </div>
1287+ * @alt
1288+ * An interactive example of a red cube with 3 sliders for moving it across x, y,
1289+ * z axis and 3 sliders for shifting it's center.
11061290 */
11071291p5 . Camera . prototype . camera = function (
11081292 eyeX ,
0 commit comments