Guest User

Untitled

a guest
Jun 5th, 2013
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. numeric d;
  2. numeric ratiox, ratioy;
  3.  
  4. def mycircle(expr x, y)=
  5. draw (x-d,y)..(x,y+d)..(x+d,y)..(x,y-d)..cycle
  6. enddef;
  7.  
  8. def myline(expr x, y, z, w) =
  9. save ratioy, ratiox;
  10. ratiox:=(z-x)/(sqrt((z-x)*(z-x)+(w-y)*(w-y)));
  11. ratioy:=(w-y)/(sqrt((z-x)*(z-x)+(w-y)*(w-y)));
  12. draw (x+d*ratiox,y+d*ratioy)--(z-d*ratiox,w-d*ratioy);
  13. enddef;
  14.  
  15. def mybline(expr x, y, z, w) =
  16. save ratioy, ratiox;
  17. pickup pencircle scaled 1.5pt;
  18. ratiox:=(z-x)/(sqrt((z-x)*(z-x)+(w-y)*(w-y)));
  19. ratioy:=(w-y)/(sqrt((z-x)*(z-x)+(w-y)*(w-y)));
  20. draw (x+d*ratiox,y+d*ratioy)--(z-d*ratiox,w-d*ratioy);
  21. pickup pencircle scaled .5pt;
  22. enddef;
  23.  
  24.  
  25. beginfig(1);
  26. numeric x[],y[];
  27. u:=1.3cm;
  28. d:=0.05u;
  29.  
  30.  
  31. for i=0 upto 4:
  32. x[i]:=u*cosd(72*i+18); y[i]:=u*sind(72*i+18);
  33. mycircle(x[i],y[i]);
  34. endfor
  35. myline(x[0],y[0],x[1],y[1]);
  36. myline(x[0],y[0],x[2],y[2]);
  37. myline(x[0],y[0],x[3],y[3]);
  38. myline(x[0],y[0],x[4],y[4]);
  39. myline(x[1],y[1],x[2],y[2]);
  40. myline(x[1],y[1],x[3],y[3]);
  41. myline(x[1],y[1],x[4],y[4]);
  42. myline(x[2],y[2],x[3],y[3]);
  43. myline(x[2],y[2],x[4],y[4]);
  44. myline(x[3],y[3],x[4],y[4]);
  45. endfig;
  46.  
  47. beginfig(2);
  48. u:=1.3cm;
  49. d:=0.05u;
  50. numeric x[],y[];
  51. l:=-u/2;
  52. r:=u/2;
  53. h:=u;
  54. x[0]:=l; y[0]:=-h/2;
  55. x[1]:=l; y[1]:=h/2;
  56. x[2]:=r; y[2]:=0;
  57. x[3]:=r; y[3]:=-h;
  58. x[4]:=r; y[4]:=h;
  59. for i=0 upto 4:
  60. mycircle(x[i],y[i]);
  61. endfor
  62. for i=2 upto 4:
  63. myline(x[0],y[0],x[i],y[i]);
  64. myline(x[1],y[1],x[i],y[i]);
  65. endfor
  66. endfig;
  67.  
  68. beginfig(3);
  69. numeric a;
  70. u:=1.3cm;
  71. d:=0.05u;
  72. for i=0 upto 4:
  73. y[i]:=0;
  74. x[i]:=i*u/2;
  75. mycircle(x[i],y[i]);
  76. endfor;
  77. for i=0 upto 3:
  78. myline(x[i],y[i],x[i+1],y[i+1]);
  79. endfor;
  80.  
  81. endfig;
  82.  
  83. beginfig(4);
  84. numeric x[],y[];
  85. u:=1.3cm;
  86. d:=0.05u;
  87.  
  88. for i=0 upto 4:
  89. x[i]:=u*cosd(72*i+18); y[i]:=u*sind(72*i+18);
  90. mycircle(x[i],y[i]);
  91. endfor
  92. for i=0 upto 4:
  93. myline(x[i],y[i],x[(i+1)mod5],y[(i+1)mod5]);
  94. %myline(x[i],y[i],x[i+1],y[i+1]);
  95. endfor
  96. endfig;
  97.  
  98. beginfig(5);
  99. numeric x[],y[];
  100. u:=1.3cm;
  101. d:=0.05u;
  102.  
  103. for i=0 upto 3:
  104. x[i]:=i*u; y[i]:=i*u;
  105. endfor
  106.  
  107. x5:=(x1+x2)/2;
  108.  
  109. mycircle (x1,y1);
  110. mycircle (x1,y2);
  111. mycircle (x2,y1);
  112. mycircle (x2,y2);
  113. mycircle (x0,y2);
  114. mycircle (x3,y2);
  115.  
  116. myline (x1,y1,x2,y1);
  117. %myline (x2,y2,x2,y1);
  118. %myline (x1,y1,x1,y2);
  119. myline (x2,y2,x1,y2);
  120. myline (x1,y2,x0,y2);
  121. myline (x3,y2,x2,y2);
  122. myline (x1,y1,x0,y2);
  123. myline (x3,y2,x2,y1);
  124. myline (x1,y1,x2,y2);
  125.  
  126. myline (x0,y2,x0,y3);
  127. myline (x1,y2,x1,y3);
  128. myline (x2,y2,x2,y3);
  129. myline (x3,y2,x3,y3);
  130. draw (x0,y3-d)--(x3,y3-d);
  131.  
  132. myline (x1,y2,x5,y3);
  133. myline (x2,y1,x5,y0);
  134. myline (x0,y2,x0,y0);
  135. myline (x3,y2,x3,y0);
  136. draw (x0,y0+d)--(x3,y0+d);
  137. myline (x1,y1,x1,y0);
  138. myline (x2,y1,x2,y0);
  139. myline (x1,y1,x0-d,y1);
  140. myline (x2,y1,x3+d,y1);
  141.  
  142.  
  143. endfig;
  144.  
  145. \end
Advertisement
Add Comment
Please, Sign In to add comment