January 15, 2021, 06:29:06 PM

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

#### BlitzBot

• Jr. Member
•  • Posts: 1 ##### [bb] Analytic Geometric Algorithms by superStruct [ 1+ years ago ]
« on: June 29, 2017, 12:28:39 AM »
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. ;----------------------------------------;
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
55.
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)
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