Ooops
January 20, 2021, 01:49:26 PM

Author Topic: [bb] Analytic Geometric Algorithms by superStruct [ 1+ years ago ]  (Read 420 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Analytic Geometric Algorithms
Author : superStruct
Posted : 1+ years ago

Description : This must be used as a header file. Includes things such as drawing circles, hyperbolas, parabolas, and ellipses. Not useful for much of anything but adaptable.

Code :
Code: BlitzBasic
  1. ;----------------------------------------;
  2. ;--------Advanced Analytic Geometry------;
  3. ;----------------Created By--------------;
  4. ;---------------Sam Stratter-------------:
  5. ;----------------------------------------;
  6.  
  7.  
  8. ;Function to Draw Ellips
  9. ;FD is the distance between the 2 focal points
  10. ;SOFR is the Sum Of Focal Radii
  11. ;Major$ is the major axis allignment
  12.  
  13. Function DrawEllipse(FD,SOFR,major$)
  14.  
  15. If major = "x"
  16.         x1 = GraphicsWidth()/2 + FD
  17.         x2 = GraphicsWidth()/2 - FD
  18.         y1 = GraphicsHeight()/2
  19.         y2 = GraphicsHeight()/2
  20. Else If major = "y"
  21.         x1 = GraphicsWidth()/2
  22.         x2 = GraphicsWidth()/2
  23.         y1 = GraphicsHeight()/2 - FD
  24.         y2 = GraphicsHeight()/2 + FD
  25. EndIf
  26.        
  27. Plot x1,y1
  28. Plot x2,y2
  29.  
  30. For y3 = 0 To GraphicsHeight() Step 1
  31.         For x3 = 0 To GraphicsWidth() Step 1
  32.                 res1 = (x3 - x1)^2
  33.                 res2 = (y3 - y1)^2
  34.                 res3 = res2 + res1
  35.                 dist1% = Sqr(res3)
  36.                 res4 = (x3 - x2)^2
  37.                 res5 = (y3 - y2)^2
  38.                 res6 = res4 + res5
  39.                 dist2% = Sqr(res6)
  40.                 If dist1 + dist2 = SOFR + 200
  41.                         Plot x3,y3
  42.                         Flip
  43.                 EndIf  
  44.         Next
  45. Next
  46.  
  47. End Function
  48.  
  49. ;-----------------------------------------------------------------
  50.  
  51. ;Function to Draw Circles
  52. ;Uses the CenterX
  53. ;Uses the CenterY
  54. ;Uses the Radius
  55.  
  56. Function DrawCircle(CenterX,CenterY,radius)
  57.  
  58. x1 = CenterX
  59. y1 = CenterY
  60.  
  61. Plot x1,y1
  62.  
  63. For y2 = 0 To GraphicsHeight()
  64.         For x2 = 0 To GraphicsWidth()
  65.                 res1 = (x2 - x1)^2
  66.                 res2 = (y2 - y1)^2
  67.                 res3 = res2 + res1
  68.                 dist = Sqr(res3)
  69.                 If dist = radius
  70.                         Plot x2,y2
  71.                         Flip
  72.                 EndIf  
  73.         Next
  74. Next
  75.  
  76. End Function
  77.  
  78. ;-------------------------------------------------------------------
  79.  
  80. ;Function to Draw Parabola
  81. ;Uses the center x and y
  82. ;DC is distance from the focus to the vertex
  83. ;Major is the same as it is in the ellipse
  84. ;Curve is -1<Curve<1 to show which way it opens
  85.  
  86. Function DrawParabola(CenterX,CenterY,DC,major$,Curve)
  87.  
  88. dist1% = 0
  89. dist2% = 0
  90. DirectX = 0
  91. DirectY = 0
  92.  
  93. If major = "x"
  94.         If curve < 0
  95.                 DirectY = CenterY - 2*DC
  96.         Else
  97.                 DirectY = CenterY + 2*DC
  98.         EndIf
  99. ElseIf major = "y"
  100.         If curve < 0
  101.                 DirectX = CenterX - 2*DC
  102.         Else
  103.                 DirectX = CenterX + 2*DC
  104.         EndIf
  105. EndIf
  106.  
  107. Plot CenterX,CenterY
  108.  
  109. If major = "x" 
  110.         For y = 0 To GraphicsHeight()
  111.                 For x = 0 To GraphicsWidth()
  112.                         If major = "x"
  113.                                 DirectX = x
  114.                         ElseIf major = "y"
  115.                                 DirectY = y
  116.                         EndIf
  117.                         res1 = (CenterX - x)^2
  118.                         res2 = (CenterY - y)^2
  119.                         res3 = res2 + res1
  120.                         dist1 = Sqr(res3)
  121.                         res4 = (x - DirectX)^2
  122.                         res5 = (y - DirectY)^2
  123.                         res6 = res4 + res5
  124.                         dist2 = Sqr(res6)
  125.                         If dist1 = dist2
  126.                                 Plot x,y
  127.                                 Flip
  128.                         EndIf
  129.                 Next
  130.         Next
  131. ElseIf major = "y"
  132.         For x = 0 To GraphicsWidth()
  133.                 For y = 0 To GraphicsHeight()
  134.                         If major = "x"
  135.                                 DirectX = x
  136.                         ElseIf major = "y"
  137.                                 DirectY = y
  138.                         EndIf
  139.                         res1 = (CenterX - x)^2
  140.                         res2 = (CenterY - y)^2
  141.                         res3 = res2 + res1
  142.                         dist1 = Sqr(res3)
  143.                         res4 = (x - DirectX)^2
  144.                         res5 = (y - DirectY)^2
  145.                         res6 = res4 + res5
  146.                         dist2 = Sqr(res6)
  147.                         If dist1 = dist2
  148.                                 Plot x,y
  149.                                 Flip
  150.                         EndIf
  151.                 Next
  152.         Next
  153. EndIf          
  154.  
  155. End Function
  156.  
  157. ;---------------------------------------------------------------------------------------------------------------
  158.  
  159. ;Function to Draw Hyperbola
  160. ;All variables are the same as seen in other functions
  161.  
  162. Function DrawHyperbola(FD,SOFR,major$)
  163.  
  164. If major = "x"
  165.         x1 = GraphicsWidth()/2 + FD
  166.         x2 = GraphicsWidth()/2 - FD
  167.         y1 = GraphicsHeight()/2
  168.         y2 = GraphicsHeight()/2
  169. Else If major = "y"
  170.         x1 = GraphicsWidth()/2
  171.         x2 = GraphicsWidth()/2
  172.         y1 = GraphicsHeight()/2 - FD
  173.         y2 = GraphicsHeight()/2 + FD
  174. EndIf
  175.        
  176. Plot x1,y1
  177. Plot x2,y2
  178.  
  179. If major = "x"
  180.         For y3 = 0 To GraphicsHeight() Step 1
  181.                 For x3 = 0 To GraphicsWidth() Step 1
  182.                         res1 = (x3 - x1)^2
  183.                         res2 = (y3 - y1)^2
  184.                         res3 = res2 + res1
  185.                         dist1% = Sqr(res3)
  186.                         res4 = (x3 - x2)^2
  187.                         res5 = (y3 - y2)^2
  188.                         res6 = res4 + res5
  189.                         dist2% = Sqr(res6)
  190.                         If dist1 > dist2
  191.                                 If dist1 - dist2 = SOFR
  192.                                         Plot x3,y3
  193.                                         Flip   
  194.                                 EndIf
  195.                         EndIf
  196.                         If dist2 > dist1
  197.                                 If dist2 - dist1 = SOFR
  198.                                         Plot x3,y3
  199.                                         Flip
  200.                                 EndIf
  201.                         EndIf    
  202.                 Next
  203.         Next
  204. EndIf
  205.  
  206. If major = "y"
  207.         For x3 = 0 To GraphicsWidth() Step 1
  208.                 For y3 = 0 To GraphicsHeight() Step 1
  209.                         res1 = (x3 - x1)^2
  210.                         res2 = (y3 - y1)^2
  211.                         res3 = res2 + res1
  212.                         dist1% = Sqr(res3)
  213.                         res4 = (x3 - x2)^2
  214.                         res5 = (y3 - y2)^2
  215.                         res6 = res4 + res5
  216.                         dist2% = Sqr(res6)
  217.                         If dist1 > dist2
  218.                                 If dist1 - dist2 = SOFR
  219.                                         Plot x3,y3
  220.                                         Flip   
  221.                                 EndIf
  222.                         EndIf
  223.                         If dist2 > dist1
  224.                                 If dist2 - dist1 = SOFR
  225.                                         Plot x3,y3
  226.                                         Flip
  227.                                 EndIf
  228.                         EndIf    
  229.                 Next
  230.         Next
  231. EndIf
  232.  
  233. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal