ellipse eller 3D kulge - algoritmer

Tags:    c#

<< < 123 > >>
Hej udviklere.
Jeg skal bruge en algoritme til at tegne en ellipse.
Jeg vil helst ikke røre System.Drawing, siden at outputtet ikke skal tegnes ind i en GUI.
Er der nogen der kender en sådan algoritme?

Jeg kunne også godt bruge en algoritme til en hul 3D kugle.

EDIT:
Nogen der har noget uden radius?
Man kan miste den sidste pixel med det :(
(ikke besvaret)



Indlæg senest redigeret d. 10.01.2012 19:58 af Bruger #16191
22 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 18 karma
Sorter efter stemmer Sorter efter dato
nåååh, fedt nok.

EDIT: det kan da' ikke passe...
så skal den kun tegne 1 streg...

EDIT: nu forstår jeg.
Jeg må vel bare sige steps = WorldLength?



Indlæg senest redigeret d. 10.01.2012 19:27 af Bruger #16191
med stepsne kan det være alt fra 9 til 1024 sååå ja...

Men jeg mangler en ellipse algoritme der ikke bruger radius, siden man ikke kan ramme alle størrelser. fx hvis den skal være 127 bred, kan jeg ikke sætte center på 63.5, siden det skal være et helt tal. Så jeg misser en enkelt række. (eller laver en extra)

Kuglen er lavet med intet andet end det basale i C#
Ingen 3D programmering eller noget.
Det eneste jeg har er algoritmer og xyz punkter.

Jeg har en algoritme for en kugle, men jeg mangler en til en hul kugle, med en skal på 1 lag.



Indlæg senest redigeret d. 10.01.2012 21:14 af Bruger #16191
Jeg bruger doubles i algoritmen...bare brug doubles i streg tegne funktionen også, så kan din ellipse tegnes med en hvilken som helst radius.

Mht kuglen, så er en "tynd" skal vel bare en kugle med en mindre kugle indeni. Forskellen i radius bliver så skallens tykkelse.



Med hensyn til ellipsen, gjorde jeg det måske ikke klart lige før, at alle mine punkter er i ushort (kan ikke ændres).

Med hensyn til kuglen, vil jeg gerne undgå at skulle lave 2.
Siden det tager ca. den dobbelte tid.
det skal gå så hurtigt som muligt, siden spillet bruger Thread.Sleep(1); hver gang der sker en ændring i verdenen.
Så jeg skal altså bruge en algoritme der kan se alle de yderste punkter i en kugle (sphere).

Jeg har prøvet med den normale kugle udregning hvor man siger
Fold kodeboks ind/udCSharp kode 

Hvor jeg så har ændret den til
Fold kodeboks ind/udCSharp kode 

Resultatet blev dog en kugle på 0 pixels.

Så jeg prøvede
Fold kodeboks ind/udCSharp kode 

Det virkede i store forhold, men ikke i små.


Nogen der har en algoritme der kan finde alle yderste punkter i en kugle?



Du definerer vel selv kuglen, så du må jo have punkterne.
By the way, hvis det er en kugle, så kan du jo kun se yderpunkterne, så der er ingen grund til at "skallen" har en tykkelse. Du kan jo heller ikke se, hvor tyk læderet i en fodbold er, så drop indersiden.



Se bare... der er dine formler:

http://en.wikipedia.org/wiki/Sphere



Hvis du vil have subpixel nøjagtighed i din ellipse, så er short ikke brugbar, så er du nødt til at have kommatal.



Du definerer vel selv kuglen, så du må jo have punkterne.
By the way, hvis det er en kugle, så kan du jo kun se yderpunkterne, så der er ingen grund til at "skallen" har en tykkelse. Du kan jo heller ikke se, hvor tyk læderet i en fodbold er, så drop indersiden.


Som sagt skal jeg ikke bare tegne kuglen.
Spilleren kan gå ind i den, og ødelægge dele af den.

Se bare... der er dine formler:

http://en.wikipedia.org/wiki/Sphere


Som sagt vil jeg gerne undgå radiuser, siden brugeren kunne ønske sig en ikke-perfekt kugle.



Indlæg senest redigeret d. 11.01.2012 23:20 af Bruger #16191
Hvordan vil du definere en kugle uden en radius ? Den er man altså lidt nødt til at have ligesom en rektangel har en højde og en bredde.



Denne kode laver en kugle der ikke bruger radius (det er ikke en "rund" kugle)
Denne kugle bliver lavet ud fra højde/bredde/lengde
Fold kodeboks ind/udCSharp kode 




<< < 123 > >>
t