Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- a[0] = a[0] + b[0];
- a[1] = a[1] + b[1];
- a[2] = a[2] + b[2];
- return a;
- }
- function translateVertex(v, b) {
- for (i = 0; i < v.length; i++)
- { translate(v[i], b); }
- return v;
- }
- //=========================================================================================
- function scale(a, s) {
- for (var i = 0; i < a.length; i++) {
- a[i]*= s;
- }
- return a;
- }
- function scaleVertex(v, s) {
- for (var i = 0; i < v.length; i++) {
- v[i] = scale(v[i],s);
- }
- return v;
- }
- //=========================================================================================
- function degreesToRadians(angle) {
- return radians = (Math.PI / 180) * angle;
- }
- //----------------------------------------------------------------------------------------
- function rotateX(p,q,angle){ /
- var pom=p[1];
- var f=degreesToRadians(angle);
- p[1]= ((p[1]-q[1])*Math.cos(f)-(p[2]-q[2])*Math.sin(f))+q[1];
- p[2]= ((pom-q[1])*Math.sin(f)+(p[2]-q[2])*Math.cos(f))+q[2];
- return p;
- }
- function rotateXVertex(v,q,angle){
- for (var i = 0; i < v.length; i++) {
- v[i] = rotateX(v[i],q,angle);
- }
- return v;
- }
- //-----------------------------------------------------------------------------------------
- function rotateY(p,q,angle){
- var pom=p[2];
- var f=degreesToRadians(angle);
- p[2]= ((p[2]-q[2])*Math.cos(f)-(p[0]-q[0])*Math.sin(f))+q[2];
- p[0]= ((pom-q[2])*Math.sin(f)+(p[0]-q[0])*Math.cos(f))+q[0];
- return p;
- }
- function rotateYVertex(v,q,angle){
- for (var i = 0; i < v.length; i++) {
- v[i] = rotateY(v[i],q,angle);
- }
- return v;
- }
- //------------------------------------------------------------------------------------------
- function rotateZ(p,q,angle){
- var pom=p[0];
- var f=degreesToRadians(angle);
- p[0]= ((p[0]-q[0])*Math.cos(f)-(p[1]-q[1])*Math.sin(f))+q[0];
- p[1]= ((pom-q[0])*Math.sin(f)+(p[1]-q[1])*Math.cos(f))+q[1];
- return p;
- }
- function rotateZVertex(v,q,angle){
- for (var i = 0; i < v.length; i++) {
- v[i] = rotateZ(v[i],q,angle);
- }
- return v;
- }
- //-----------------------------------------------------------------------------------------
- function rotate( P, A, B, angle){
- var r,R,sina,cosa,sinb,cosb,tmp;
- if(A[0]==B[0] & A[1]==B[1])
- P=rotateZ(P,A,angle);
- else
- if(A[0]==B[0] & A[2]==B[2])
- P=rotateY(P,A,angle);
- else
- if(A[1]==B[1] & A[2]==B[2])
- P=rotateX(P,A,angle);
- else {
- var C=[B[0]-A[0],B[1]-A[1],B[2]-A[2]];
- r=Math.sqrt(C[0]*C[0] + C[1]*C[1]);
- R=Math.sqrt(C[0]*C[0] + C[1]*C[1] + C[2]*C[2]);
- sina=C[1]/r;
- cosa=C[0]/r;
- sinb=C[2]/R;
- cosb=r/R;
- P[0]=P[0]-A[0]; P[1]=P[1]-A[1]; P[2]=P[2]-A[2];
- tmp=P[0];
- P[0]=P[0]*cosa + P[1]*sina;
- P[1]=-tmp*sina + P[1]*cosa;
- tmp=P[0];
- P[0]=P[0]*cosb + P[2]*sinb;
- P[2]=-tmp*sinb + P[2]*cosb;
- P=rotateX(P,[0,0,0],angle);
- tmp=P[0];
- P[0]=P[0]*cosb - P[2]*sinb;
- P[2]=tmp*sinb + P[2]*cosb;
- tmp=P[0];
- P[0]=P[0]*cosa - P[1]*sina;
- P[1]=tmp*sina + P[1]*cosa;
- P[0]=P[0]+A[0]; P[1]=P[1]+A[1]; P[2]=P[2]+A[2];
- }
- return P;
- }
- function rotateVertex(v,A,B,angle){
- for (var i = 0; i < v.length; i++) {
- v[i] = rotate(v[i],A,B,angle);
- }
- return v;
- }
- var d=700;
- var E = [400, 300, -d];
- function projectXY(p, d) {
- var q = [];
- q[0] = (p[0]-E[0]) * d / (d + p[2]) + E[0];
- q[1] = (p[1]-E[1]) * d / (d + p[2]) + E[1];
- return q;
- }
- function projectCabiniet(p, angle){
- angle = (Math.PI / 180) * angle;
- var q = [];
- q[0] = p[0] + 0.5 * p[2] * Math.cos(angle);
- q[1] = p[1] - 0.5 * p[2] * Math.sin(angle);
- return q;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement