Seite 1 von 1
2D Drawing ... Bug im Kopf
Verfasst: 01.09.2019 17:38
von Then
Hi Leute !
Gestern habe ich mir scheinbar die letzten Gehirnzellen weg gesof.....
Ich kriege das nicht mehr hin, dass ich in 2D Linien von der Mitte eines Kreises nach Außen zeichne im Abstand von zb. 20 Grad.... sollten dann ja 18 Linien sein. Ich steh völlig am Schlauch.... Hilfe, Bitte !
Re: 2D Drawing ... Bug im Kopf
Verfasst: 01.09.2019 17:49
von #NULL
Code: Alles auswählen
EnableExplicit
Define ww, wh, style, win, canvas, event, quit
ww=800
wh=600
style | #PB_Window_ScreenCentered
style | #PB_Window_SystemMenu
style | #PB_Window_MinimizeGadget
win = OpenWindow(#PB_Any, 50,100, ww,wh, "", style)
AddKeyboardShortcut(win, #PB_Shortcut_Escape, 10)
canvas = CanvasGadget(#PB_Any, 0, 0, ww, wh, #PB_Canvas_Keyboard)
StartDrawing(CanvasOutput(canvas))
Define a.f = 0
Define r.f = 100
While a < 360
LineXY(ww/2, wh/2, ww/2 + (r * Cos(Radian(a))), wh/2 + (r * Sin(Radian(a))), $00ff00)
a + 20
Wend
StopDrawing()
Repeat
event = WaitWindowEvent(100)
Select event
Case #PB_Event_CloseWindow
quit = #True
Case #PB_Event_Menu
Select EventMenu()
Case 10
quit = #True
EndSelect
EndSelect
Until quit
Re: 2D Drawing ... Bug im Kopf
Verfasst: 01.09.2019 17:57
von mk-soft
Musste kurz überlegen. Urzeiger sinn
Code: Alles auswählen
Define x, y, dx, dx, len
len = 100
x = 0
y = y
For winkel = 0 To 359 Step 20
alpha.f = Radian(winkel)
dx = x + Sin(alpha) * len
dy = y + Cos(alpha) * len
Debug "w = " + winkel +" dx = " + dx + " dy = " + dy
Next
Re: 2D Drawing ... Bug im Kopf
Verfasst: 01.09.2019 18:21
von Then
Danke, habe jetzt im dem Codearchiv gesucht und diesen Code missbraucht.... aber eurer ist schöner....
DANKE !
Re: 2D Drawing ... Bug im Kopf
Verfasst: 21.09.2021 17:33
von Then
Herje, ist mir schon peinlich.
Der Code sieht gut aus, aber wie mach ich es, dass er nicht aus der Mitte zeichnet, sondern quasi ca 10 Pixel vor dem Ende des Striches beginnt... es soll also nur der äußere Ring zu sehen sein.... Hätte ich mal in Mathe besser aufgepasst
Re: 2D Drawing ... Bug im Kopf
Verfasst: 22.09.2021 11:09
von mk-soft
Sollte so stimmen ...
Code: Alles auswählen
Define.d x, y, dx, dy, dx1, dx1, len1, dx2, dy2, len2
Define alpha.d
len1 = 100
len2 = 110
x = 0
y = 0
For winkel = 0 To 359 Step 20
alpha = Radian(winkel)
dx = Sin(alpha)
dy = Cos(alpha)
dx1 = x + dx * len1
dy1 = y + dy * len1
dx2 = x + dx * len2
dy2 = y + dy * len2
Debug "w = " + winkel +" dx = " + dx + " dy = " + dy
Next
Re: 2D Drawing ... Bug im Kopf
Verfasst: 22.09.2021 20:23
von Then
Danke, habe extra meinen Commodore c16 ausgegraben, weil ich da irgendwo auf einer Kassette so einen code habe
Werde es mir aber morgen früh nochmal angucken. Heute muss ich noch Mr. Puniverse, Boulder Dash und "one man and His Android" spielen.... Wenn der grad mal läuft
Re: 2D Drawing ... Bug im Kopf
Verfasst: 24.09.2021 17:49
von #NULL
Du kannst bei LineXY() auch dem Startpunkt einen Radius mit draufgeben, z.B. 0.5 mal deinen vollen Radius, dann zeichnet er von der Hälfte bis außen (1.0*Radius). Genauso kannst du den End-Radius auch verringern, z.B. (0.75*Radius).
Code: Alles auswählen
EnableExplicit
Define ww, wh, style, win, canvas, event, quit
ww=800
wh=600
style | #PB_Window_ScreenCentered
style | #PB_Window_SystemMenu
style | #PB_Window_MinimizeGadget
win = OpenWindow(#PB_Any, 50,100, ww,wh, "", style)
AddKeyboardShortcut(win, #PB_Shortcut_Escape, 10)
canvas = CanvasGadget(#PB_Any, 0, 0, ww, wh, #PB_Canvas_Keyboard)
StartDrawing(CanvasOutput(canvas))
Define a.f = 0
Define r.f = 100
While a < 360
; grün: ganze Linie von r 0 (Mittelpunkt) zu r (ganz außen)
LineXY(ww/2,
wh/2,
ww/2 + (r * Cos(Radian(a))),
wh/2 + (r * Sin(Radian(a))),
$00ff00)
; rot: Teilradius, *0 wäre Mittelpunkt, *1.0 wäre ganz außen also voll r
Define r1.f = r * 0.5
Define r2.f = r * 0.75
LineXY(ww/2 + (r1 * Cos(Radian(a))),
wh/2 + (r1 * Sin(Radian(a))),
ww/2 + (r2 * Cos(Radian(a))),
wh/2 + (r2 * Sin(Radian(a))),
$0000ff)
a + 20
Wend
StopDrawing()
Repeat
event = WaitWindowEvent(100)
Select event
Case #PB_Event_CloseWindow
quit = #True
Case #PB_Event_Menu
Select EventMenu()
Case 10
quit = #True
EndSelect
EndSelect
Until quit