Advertisement
Guest User

Untitled

a guest
Jan 12th, 2020
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1.  
  2. a[0] = a[0] + b[0];
  3. a[1] = a[1] + b[1];
  4. a[2] = a[2] + b[2];
  5. return a;
  6. }
  7.  
  8. function translateVertex(v, b) {
  9. for (i = 0; i < v.length; i++)
  10. { translate(v[i], b); }
  11. return v;
  12. }
  13.  
  14. //=========================================================================================
  15.  
  16. function scale(a, s) {
  17. for (var i = 0; i < a.length; i++) {
  18. a[i]*= s;
  19. }
  20. return a;
  21. }
  22.  
  23. function scaleVertex(v, s) {
  24. for (var i = 0; i < v.length; i++) {
  25. v[i] = scale(v[i],s);
  26. }
  27. return v;
  28. }
  29.  
  30. //=========================================================================================
  31.  
  32. function degreesToRadians(angle) {
  33. return radians = (Math.PI / 180) * angle;
  34. }
  35.  
  36. //----------------------------------------------------------------------------------------
  37.  
  38. function rotateX(p,q,angle){ /
  39. var pom=p[1];
  40. var f=degreesToRadians(angle);
  41.  
  42. p[1]= ((p[1]-q[1])*Math.cos(f)-(p[2]-q[2])*Math.sin(f))+q[1];
  43. p[2]= ((pom-q[1])*Math.sin(f)+(p[2]-q[2])*Math.cos(f))+q[2];
  44.  
  45. return p;
  46. }
  47.  
  48. function rotateXVertex(v,q,angle){
  49. for (var i = 0; i < v.length; i++) {
  50. v[i] = rotateX(v[i],q,angle);
  51. }
  52. return v;
  53. }
  54.  
  55. //-----------------------------------------------------------------------------------------
  56.  
  57. function rotateY(p,q,angle){
  58. var pom=p[2];
  59. var f=degreesToRadians(angle);
  60.  
  61. p[2]= ((p[2]-q[2])*Math.cos(f)-(p[0]-q[0])*Math.sin(f))+q[2];
  62. p[0]= ((pom-q[2])*Math.sin(f)+(p[0]-q[0])*Math.cos(f))+q[0];
  63.  
  64. return p;
  65. }
  66.  
  67. function rotateYVertex(v,q,angle){
  68. for (var i = 0; i < v.length; i++) {
  69. v[i] = rotateY(v[i],q,angle);
  70. }
  71. return v;
  72. }
  73.  
  74. //------------------------------------------------------------------------------------------
  75.  
  76. function rotateZ(p,q,angle){
  77. var pom=p[0];
  78. var f=degreesToRadians(angle);
  79.  
  80. p[0]= ((p[0]-q[0])*Math.cos(f)-(p[1]-q[1])*Math.sin(f))+q[0];
  81. p[1]= ((pom-q[0])*Math.sin(f)+(p[1]-q[1])*Math.cos(f))+q[1];
  82.  
  83. return p;
  84. }
  85.  
  86. function rotateZVertex(v,q,angle){
  87. for (var i = 0; i < v.length; i++) {
  88. v[i] = rotateZ(v[i],q,angle);
  89. }
  90. return v;
  91. }
  92. //-----------------------------------------------------------------------------------------
  93.  
  94. function rotate( P, A, B, angle){
  95. var r,R,sina,cosa,sinb,cosb,tmp;
  96. if(A[0]==B[0] & A[1]==B[1])
  97. P=rotateZ(P,A,angle);
  98. else
  99. if(A[0]==B[0] & A[2]==B[2])
  100. P=rotateY(P,A,angle);
  101. else
  102. if(A[1]==B[1] & A[2]==B[2])
  103. P=rotateX(P,A,angle);
  104. else {
  105. var C=[B[0]-A[0],B[1]-A[1],B[2]-A[2]];
  106. r=Math.sqrt(C[0]*C[0] + C[1]*C[1]);
  107. R=Math.sqrt(C[0]*C[0] + C[1]*C[1] + C[2]*C[2]);
  108. sina=C[1]/r;
  109. cosa=C[0]/r;
  110. sinb=C[2]/R;
  111. cosb=r/R;
  112.  
  113. P[0]=P[0]-A[0]; P[1]=P[1]-A[1]; P[2]=P[2]-A[2];
  114.  
  115. tmp=P[0];
  116. P[0]=P[0]*cosa + P[1]*sina;
  117. P[1]=-tmp*sina + P[1]*cosa;
  118.  
  119. tmp=P[0];
  120. P[0]=P[0]*cosb + P[2]*sinb;
  121. P[2]=-tmp*sinb + P[2]*cosb;
  122.  
  123. P=rotateX(P,[0,0,0],angle);
  124.  
  125. tmp=P[0];
  126. P[0]=P[0]*cosb - P[2]*sinb;
  127. P[2]=tmp*sinb + P[2]*cosb;
  128.  
  129. tmp=P[0];
  130. P[0]=P[0]*cosa - P[1]*sina;
  131. P[1]=tmp*sina + P[1]*cosa;
  132.  
  133. P[0]=P[0]+A[0]; P[1]=P[1]+A[1]; P[2]=P[2]+A[2];
  134. }
  135. return P;
  136. }
  137.  
  138. function rotateVertex(v,A,B,angle){
  139. for (var i = 0; i < v.length; i++) {
  140. v[i] = rotate(v[i],A,B,angle);
  141. }
  142. return v;
  143. }
  144.  
  145.  
  146.  
  147. var d=700;
  148. var E = [400, 300, -d];
  149.  
  150. function projectXY(p, d) {
  151.  
  152. var q = [];
  153. q[0] = (p[0]-E[0]) * d / (d + p[2]) + E[0];
  154. q[1] = (p[1]-E[1]) * d / (d + p[2]) + E[1];
  155. return q;
  156. }
  157.  
  158.  
  159.  
  160. function projectCabiniet(p, angle){
  161.  
  162. angle = (Math.PI / 180) * angle;
  163. var q = [];
  164. q[0] = p[0] + 0.5 * p[2] * Math.cos(angle);
  165. q[1] = p[1] - 0.5 * p[2] * Math.sin(angle);
  166.  
  167. return q;
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement