Toon posts:

[Java] 2 punten die bij elkaar horen opslaan

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok, laten we beginnen met te vermelden dat ik onderzoek heb gedaan naar opslagmogelijkheden, zoals Vectoren en Arrays etc.

Mijn probleem:

Ik wil ellipsen tekenen. En dan niet standaard ellipsen maar ellipsen waarvan de gebruiker bepaald waar ze beginnen en welke kant de ellipse opgedraaid moet staan. Dit i.v.m. een programma dat ik ontwikkelde een tijd terug, welke ik nu verder af moet gaan maken. Gewone cirkels tekenen lukt wel met een Point welke ik opsla in een Vector, maar nu heb ik 2 punten nodig (1 = beginpunt van de Ellipse, 2 = richting ellipse ).

Met die 2e punt kan ik de hoek berekenen, welke ik nodig heb om de ellipse te kunnen draaien bij het tekenen. Dus ik heb ook een hoek. Nu wil ik eigenlijk die hoek ook direct opslaan voordat ik ga tekenen, omdat ik anders het programma extra belast door tijdens de tekenfuntie telkens de functie aanroep voor het berekenen van de hoek aan te roepen.

Als er een betere methode is voor het tekenen en draaien van ellipsen, welke ook opgeslagen moeten kunnen worden, dan hoor ik dat natuurlijk ook graag, zo niet, dan had ik graag antwoord op de vraag welke opslagmethode ik het beste kan nemen.

Een Array misschien een idee? :

points[1][point][point][hoek]
points[2][point][point][hoek] of iets dergelijks?

Of wellicht dat ik in een Vector deze 3 data-elementen bij elkaar kan houden? Probleem misschien wanneer ik m.b.v. een Iterator deze gegevens uit ga lezen..?

Ik teken overigens meer dan 1 ellipse, dus ik moet zorgen dat de 3 elementen bij elkaar blijven (zoals wellicht in de Array hierboven duidelijk is geworden)

Iemand een aanrader??

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waarom maak je niet een class Ellipse waarin je dan netjes alle gegevens over die ellipse in kan opslaan op een manier die handig is.
Al je ellipsen kan je dan opslaan in een Array of andere Collection als
Java:
1
Ellipse[] ellipsen = new Ellipse[ aantalEllipsen];

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Waarom niet gewoon met een Ellipse class waar je alle info die je nodig hebt voor het tekenen in opslaat? Dan bespaar je je alle problemen die je je op de hals haalt als je je bij elkaar horende data stucturen los van elkaar opslaat. Objecten van die class kun je dan in een vector ofzo stoppen en op wat voor manier je een Ellipse object er ook uit haalt, je hebt meteen alle info die je nodig hebt om hem te tekenen.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Wat is er mis met een eigen klasse?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Ellips {
    private Point    start, 
                     direction;
    private float    angle;

    public Ellips () { }
     
    public Ellips ( Point s, Point d ) {
        setStart ( s );
        setDirection ( d );
        calcAngle ();
    }
    // etc
}
en dan bijvoorbeeld een Vector vullen met instanties van die Ellips :?

Hoewel ik me afvraag hoe je genoeg hebt aan 2 punten en een hoek...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Verwijderd schreef op 05 november 2003 @ 11:33:
Waarom niet gewoon met een Ellipse class waar je alle info die je nodig hebt voor het tekenen in opslaat? Dan bespaar je je alle problemen die je je op de hals haalt als je je bij elkaar horende data stucturen los van elkaar opslaat. Objecten van die class kun je dan in een vector ofzo stoppen en op wat voor manier je een Ellipse object er ook uit haalt, je hebt meteen alle info die je nodig hebt om hem te tekenen.
Hmm, dat is inderdaad een idee.. Even kijken hoe ik dat zou kunnen gaan oplossen dan .. :)

Verwijderd

Topicstarter
drm schreef op 05 november 2003 @ 11:35:
Wat is er mis met een eigen klasse?
-javacode-

en dan bijvoorbeeld een Vector vullen met instanties van die Ellips :?

Hoewel ik me afvraag hoe je genoeg hebt aan 2 punten en een hoek...
Nou, met die 2 punten kan ik een hoek berekenen, dat is het belangrijkste, de rest van de gegevens voor het tekenen van een ellipse enzo heb ik wel. Ik heb die hoek nodig voor de transformatie, daarom die 2 punten.

Of ik moet op een hele andere manier makkelijk ellipsen kunnen tekenen in elke richting? :)

Verwijderd

Verwijderd schreef op 05 november 2003 @ 11:27:

points[1][point][point][hoek]
points[2][point][point][hoek] of iets dergelijks?
zo als al voorgesteld eigen classe voor Elipse maken. Ik stel voor dat je een interface maakt die zo ongeveer zo uit ziet


Boolean setEclipse(lengte, hoogte) // hoogte, breedte elipse
Boolean sethoek(hoek) // hoek

Boolean setPoints(int) //aantal punten wat de classe gaat berekenen voor de elipse

Vector getEclipse()
// krijg Vector terug met als inhoud punten van de vector

als je de data laat berekenen bij de set methodes heb je ook geen performance problemen bij het tekenen van je elipse

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Met 2 punten en een 'hoek' kan ik nog steeds oneindig veel elipsen tekenen. Of staat de straal ook vast?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op 05 november 2003 @ 11:57:
Met 2 punten en een 'hoek' kan ik nog steeds oneindig veel elipsen tekenen. Of staat de straal ook vast?
Ja, ik heb inderdaad al een straal. Ik heb namelijk een schaal opgegeven en m.b.v. die schaal en een voorgedefinieerde straal bereken ik de grote van de ellipsen.

[ Voor 23% gewijzigd door Verwijderd op 05-11-2003 12:00 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maar waarom sla je dat 2e punt überhaupt op?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op 05 november 2003 @ 13:46:
Maar waarom sla je dat 2e punt überhaupt op?
Ik sla hem in principe niet op. Tenminste zo zie ik het niet. Ik heb de raad opgevolgd hierboven en ben met een class Ellipse begonnen.

Deze code zit in een class genaamd 'placeEllipseAps'. Deze krijg een component toegestuurd waar een mouselistener aan kan hangen, wat ook gebeurt op het moment dat ik ervoor kies om ellipsen te gaan plaatsen. Hier de mouseClick-event:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
public void mouseClicked(MouseEvent e) {
        i++;
        points.add(e.getPoint()); 
        System.out.println("Click + " + i);
        if (i == 2) {
            ellipses.add(new Ellipse(points.elementAt(0), points.elementAt(1)));
            points.removeAllElements();
            i = 0;
        }            
        comp.invalidate();
        comp.repaint();
} 


De punten waar ik klik zet ik in een Vector points ( die teken ik ook op een panel zodat te zien is waar geklikt is ). Als ik 2x geklikt heb ( i == 2 ) dan vul ik de Vector ellipses met een instantie van Ellipse. Ik stuur de 2 punten mee (als Object), welke ik in de Ellipse class weer cast naar een Point. Deze instantie bevat nu als het goed is toch de punten en de hoek die ik bereken.. Dus als ik de vector ellipses uitlees bij een paint opdracht, kan ik dan nog wel het startpunt en de hoek eruit halen?

Hm.. warrig verhaal als ik het zo teruglees.. Ik hoop dat iedereen mij begrijpt.. Ik gebruik dus nu een class Ellipse.

[ Voor 4% gewijzigd door Verwijderd op 05-11-2003 14:06 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Marik2000:
zo als al voorgesteld eigen classe voor Elipse maken. Ik stel voor dat je een interface maakt die zo ongeveer zo uit ziet


Boolean setEclipse(lengte, hoogte) // hoogte, breedte elipse
Boolean sethoek(hoek) // hoek

Boolean setPoints(int) //aantal punten wat de classe gaat berekenen voor de elipse
Waarom booleans :?

En nog iets: gebruik geen engels en nederlands door elkaar, dat maakt je code echt allesbehalve leesbaarder.
offtopic:
En Eclipse betekent "verduistering" ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1