Kreisränder zeichnen
Übersicht

![]() |
SpionAtomBetreff: Kreisränder zeichnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe ein altes Problem/Programm gefunden, bei dem ich nie auf eine zufriedenstellende Lösung gekommen bin.
http://thomasdecker1.googlepages.com/kreise2.bb Was soll dieses Programm leisten. Gezeichnet werden sollen mehrere Kreise. Aber die Teile von den Kreisen, die ineinander greifen sollen nicht gezeichnet werden. Man kommt also (glaube ich) nicht umhin, jeden Punkt einzeln zu überprüfen und zu zeichnen. Das ganze wäre nicht so schlimm, wenn es da nicht eine zweite Einschränkung gäbe. Die Punkte sollen in der richtigen Reihenfolge gezeichnet werden, so dass man jeden Punkt mit dem nächsten verbinden kann, und am Ende eine geschlossene Figur herausbekommt. Das aktuelle Programm macht das irgendwie nur manchmal und wahrscheinlich gibts da eine clevere Methode als meine. Also "Geometriker" an die Front! |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600,0,2
SetBuffer BackBuffer() Type kreis Field r Field u Field ko[2] Field no End Type Type punkt Field ko[2] Field no End Type For x=0 To 10 k.kreis=New kreis k\r=30 k\ko[1]=100+x*20 k\ko[2]=100 k\u=36 k\no=x Next For k.kreis=Each kreis For x=0 To k\u If Not test(k\ko[1]+k\r*Cos(360/k\u*x),k\ko[2]+k\r*Sin(360/k\u*x),k\no) p.punkt=New punkt p\no=anzpt : anzpt=anzpt+1 p\ko[1]=k\ko[1]+k\r*Cos(360./k\u*x) p\ko[2]=k\ko[2]+k\r*Sin(360./k\u*x) EndIf Next Next While Not KeyHit(1) For p.punkt=Each punkt Plot p\ko[1],p\ko[2] If p\no<anzpt-1 Then p=After p tmpx=p\ko[1] : tmpy=p\ko[2] p=Before p Line p\ko[1],p\ko[2],tmpx,tmpy EndIf Next Flip 0 : Cls Wend : End Function test(x,y,no) For k.kreis=Each kreis If k\no<>no Then ;vergleich mit mittelpunkt koordinaten wirkungslos?! If Sqr((x-k\ko[1])^2+(y-k\ko[2])^2)<k\r Then tester=1 EndIf EndIf Next Return tester End Function sry, konnte es noch nicht testen... bin in der schule ![]() hoffe es geht (und ist in etwa das gesuchte) k\u ist der unterteilungsschritt (für einen "perfekten" kreis => 360) [EDIT:] ich habs verbessert. für die verbindung der punkte untereinander hab ich noch keine gescheite lösung gefunden :/ jetzt verbindet er einfach alle nachfolgenden punkte... |
||
Diese Signatur ist leer. |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir hats nicht besonders viel angezeigt. ![]() Ein paar Pixel am oberen linken Rand vielleicht. Wenn ich das richtig sehe, verfolgst du den Ansatz, jeden Punkt daraufhin zu überprüfen, ob er sich in einem anderen Kreis befindet. Soweit sogut. Doch garantiert das leider nicht, dass die Punkte auch in der richtigen Reihenfolge gezeichnet werden. Mein Ansatz war der, jeden nächsten Schnittpunkt von Kreisen festzuhalten. Aber irgendwas lief noch nicht so toll. Um nochmal zu verdeutlichen, was ich will, eine Skizze: ![]() (Man beachte nicht, dass es mehr Ovale als Kreise sind) Ich möchte, dass die Kreisbögen rot, grün, blau, violett in dieser Reihenfolge gezeichnet werden. (oder umgekehrt, oder auch woanders angefangen). Ich möchte nicht, dass erst rot, dann blau - oder gar erst Teile von rot, dann Teile von blau, dann wieder rot und dann grün... Sondern einfach nur nacheinander. Und zwar ausnahmslos, Kreise, die komplett innerhalb eines anderen Kreises sind, sollen auch nicht gezeichnet werden, und Kreise, die andere Kreise überhaupt nicht schneiden oder sich darin befinden, sollen ganz gezeichnet werden. Wer was weiß, darfs mir sagen ![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
brehams algorithmen ansehen und selbst programmieren.
dafür gibts keine kurze oder simple lösung da darfst du dich wohl oder übel mit algorithmik für planarität und anderen dingen auseinander setzen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
... bei der alten version war das so, hatte einige dinge vergessen da :/
aber bei der neuen sollten "kreise" entstehen... (sind eben ineinander und werden dürftig von linien verbunden, sieht eher chaotisch als kreisisch aus...) |
||
Diese Signatur ist leer. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group