Vor lauter Zahlen und sonstigem im Kopf stehe ich nun auf dem Schlauch....
ich möchte einen Kreisbogen (1/4 Kreis) von Position x,y nach Position MausX,MausY machen. Den Radius habe ich auch, aber es will nicht so klappen wie ich es brauche.
x,y => .
hier ist die Maus XY => .
Er soll bei "x,y" anfangen und nach rechts einen viertel Kreis bis genau "Maus XY" machen. Wer kann mir helfen....?
Bogen von x nach y
Bogen von x nach y
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Re: Bogen von x nach y
Das Problem ist nicht ganz eindeutig formuliert.
Wenn die StartPosition und die EndPosition frei definirbar sind, und der Radius fix ist, dann ist es nicht immer möglich "nur" ein Viertelkreis zu ziehen. Liegen die Punkte z.B. änder als der Radius ist, würde daraus ein sehr kleiner Kreissektor entstehen.
Wenn der Viertelkreis jedoch fix definiert sein soll, muss es bedingungen für XY von Start und Ende geben, sodass das überhaupt möglich wird, oder sind Ellipsen erlaubt?
Wenn die StartPosition und die EndPosition frei definirbar sind, und der Radius fix ist, dann ist es nicht immer möglich "nur" ein Viertelkreis zu ziehen. Liegen die Punkte z.B. änder als der Radius ist, würde daraus ein sehr kleiner Kreissektor entstehen.
Wenn der Viertelkreis jedoch fix definiert sein soll, muss es bedingungen für XY von Start und Ende geben, sodass das überhaupt möglich wird, oder sind Ellipsen erlaubt?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- man-in-black
- Beiträge: 362
- Registriert: 21.08.2006 17:39
Re: Bogen von x nach y
Hi,
Maus=blau
Im Grunde legen deine Bedingungen (2 Punkte + 1/4 Kreis) die Gestalt des Teilkreises bereits fest. Es ist nurnoch unklar,
auf welcher "Seite" der Mittelpunkt liegt und somit der Bogen verläuft:
MFG
MIB
Maus=blau
Im Grunde legen deine Bedingungen (2 Punkte + 1/4 Kreis) die Gestalt des Teilkreises bereits fest. Es ist nurnoch unklar,
auf welcher "Seite" der Mittelpunkt liegt und somit der Bogen verläuft:
Code: Alles auswählen
InitSprite()
InitKeyboard()
InitMouse()
Global mouse.Point
Global start.Point
start\x = 400
start\y = 300
Procedure drawCurve(x1.f,y1.f,x2.f,y2.f,teilung)
radius.f = 0.5*Sqr(Pow(x1-x2,2)+Pow(y1-y2,2))/Sin(#PI/4)
center.Point\x = 0.5*(x2-x1)+x1+0.5*(y1-y2)
center.Point\y = 0.5*(y2-y1)+y1+0.5*(x2-x1)
Circle(center\x,center\y,5,$FF00FF)
startwinkel.f = ATan2(x1-center\x, y1-center\y)+#PI/2
winkel.f = #PI/2/teilung
For i=0 To teilung-1
l1x.f = Sin(winkel*i+startwinkel)*radius+center\x
l1y.f = -Cos(winkel*i+startwinkel)*radius+center\y
l2x.f = Sin(winkel*i+winkel+startwinkel)*radius+center\x
l2y.f = -Cos(winkel*i+winkel+startwinkel)*radius+center\y
LineXY(l1x,l1y,l2x,l2y)
Next
EndProcedure
OpenWindow(0,0,0,800,600,"",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,800,600)
Repeat
ClearScreen(0)
StartDrawing(ScreenOutput())
Circle(start\x,start\y,5,$FFFFFF)
Circle(mouse\x,mouse\y,5,$FF0000)
drawCurve(start\x,start\y,mouse\x,mouse\y,10)
StopDrawing()
FlipBuffers()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
quit = 1
EndIf
ExamineMouse()
mouse\x = MouseX()
mouse\y = MouseY()
event = WindowEvent()
While event
If event = #PB_Event_CloseWindow
quit = 1
Break
EndIf
event = WindowEvent()
Wend
Until quit = 1
End
MIB
Re: Bogen von x nach y
Hi, vielen Dank... funktioniert super
....habe vergessen zu erwähnen, das es in 3.93 laufen muss, weil ich es in einem "alten" Programm einbauen muss und da geht ATan2 nicht Sorry !
....habe vergessen zu erwähnen, das es in 3.93 laufen muss, weil ich es in einem "alten" Programm einbauen muss und da geht ATan2 nicht Sorry !
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
- man-in-black
- Beiträge: 362
- Registriert: 21.08.2006 17:39
Re: Bogen von x nach y
Hi,
edit:
http://forums.purebasic.com/german/view ... =3&t=22338
Ich habe da nochmal eine Zeile einfügen müssen. Im 4. Quadranten gab es Probleme:
MFG
MIB
Warum dann nicht selbst programmieren? Sind doch einfache trigonometrische Betrachtungen (musst nur bei 0-Division aufpassen)... weil ich es in einem "alten" Programm einbauen muss und da geht ATan2 nicht Sorry !
edit:
http://forums.purebasic.com/german/view ... =3&t=22338
Ich habe da nochmal eine Zeile einfügen müssen. Im 4. Quadranten gab es Probleme:
Code: Alles auswählen
Procedure.f Angle(x.f,y.f)
Protected Angle.f
Angle = ATan(y/x)
If x < 0 : Angle + #PI : EndIf
If y < 0 And x => 0 : Angle + 2*#PI : EndIf ;<<
If x = 0 And y = 0 : Angle = 0 : EndIf
ProcedureReturn Angle*180/#PI
EndProcedure
MIB