Toon posts:

"Wegen" tussen coordinaten

Pagina: 1
Acties:

Onderwerpen


  • stefanf20
  • Registratie: november 2010
  • Laatst online: 22-09 23:13
Ik heb het volgende probleem en heb niet echt een idee hoe dit op te lossen. Voor een kaart binnen een gebouw heb ik x,y coordinaten. Nu wil ik tussen deze x,y coordinaten een lijn tekenen zodat je de 'wegen' krijgt binnen het gebouw.

Ik heb een XML bestand met daarin de x,y coordinaten. Hoe kan ik nu bepalen welke lijnen bij elkaar horen en hoe kan ik hier een lijn tussen tekenen? Bij kruispunten raak ik in de war en heb ik niet echt een idee hoe ik dit kan oplossen. Wie kan me op weg helpen?

  • Gamebuster
  • Registratie: juli 2007
  • Laatst online: 17-09 17:35
Dus... Je wilt enkel een lijntje tekenen tussen 2 puntjes?

Aangeven met welke taal je werkt zou handig zijn. Meeste grafische omgevingen hebben wel een drawLine method.

Let op: Mijn post bevat meningen, aannames of onwaarheden


  • stefanf20
  • Registratie: november 2010
  • Laatst online: 22-09 23:13
Ik wil inderdaad lijnen trekken tussen punten en dat snap ik ook wel hoe dat dat moet. Ik kom alleen in de knoop hoe je bepaald welk punt naast welke punt hoort. Ik heb een XML bestand met willekeurige punten. En hoe bepaal je hierin de kruispunten?

  • Akathos
  • Registratie: juni 2006
  • Laatst online: 11-11-2014
Dat is gewoon simpele wiskunde:

y1 = a * b + c
y2 = a * b + c

y1 = y2

En dan heb je het kruispunt :)

Programming is a lot like sex. One mistake and you're providing support for a lifetime.


  • NMe
  • Registratie: februari 2004
  • Laatst online: 13:16

NMe

Quia Ego Sic Dico.

Als ik je probleem goed begrijp is het probleem dus niet dat je lijnen moet trekken maar dat deze lijnen niet direct van A naar B gaan?

Verder: de taal waarin je programmeert en een betere omschrijving van je probleem lijken me wel wenselijk. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • stefanf20
  • Registratie: november 2010
  • Laatst online: 22-09 23:13
Voorbeeldje van wat bij mij nu mis gaat:

(schaal klopt niet helemaal maar idee is duidelijk)

Ik wil dus met een functie bepalen welke punten gekoppeld aan elkaar moeten worden dus bijvoorbeeld van punt (0,0) zou het resultaat worden:
(0,2),(-2,0),(0,-2),(2,0)

En van punt (-2,0):
(0,0)

Punt (0,2):
(0,0)

etc.

Alleen ik kijk nu dus als het punt een max verschil heeft van 2 dan wordt hij beschouwd als punt waar hij aan verbonden moet worden dus dan krijg je het probleem dat bij punt:
(0,2) hij verbonden wordt met:
(0,0)(2,0) en (-2,0)

Wat ik dus niet wil.

Programmeertaal C#

  • ctor
  • Registratie: augustus 2009
  • Laatst online: 02-08-2012

ctor

Dormito ergo sum

nvm

[Voor 96% gewijzigd door ctor op 01-11-2010 11:21]

When I had journeyed half of our life's way, I found myself within a shadowed forest, for I had lost the path that does not stray.


  • TJHeuvel
  • Registratie: mei 2008
  • Niet online
stefanf20 schreef op maandag 01 november 2010 @ 11:18:
Voorbeeldje van wat bij mij nu mis gaat:
[afbeelding]
(schaal klopt niet helemaal maar idee is duidelijk)

Ik wil dus met een functie bepalen welke punten gekoppeld aan elkaar moeten worden dus bijvoorbeeld van punt (0,0) zou het resultaat worden:
(0,2),(-2,0),(0,-2),(2,0)

En van punt (-2,0):
(0,0)

Punt (0,2):
(0,0)

etc.

Alleen ik kijk nu dus als het punt een max verschil heeft van 2 dan wordt hij beschouwd als punt waar hij aan verbonden moet worden dus dan krijg je het probleem dat bij punt:
(0,2) hij verbonden wordt met:
(0,0)(2,0) en (-2,0)

Wat ik dus niet wil.

Programmeertaal C#
Kan je uitleggen waarom juist die specifieke punten niet gekozen mogen worden?
Wat gebruik je om de lijnen te tekenen? Gewoon GDI?

Freelance Unity3D developer


  • Flipke84
  • Registratie: juli 2008
  • Laatst online: 12-09-2019
Je mag een punt alleen verbinden als het x of y coordinaat max 2 verschilt niet als beide verschillen (dit zijn de diagonalen).

  • TIGER79
  • Registratie: december 2001
  • Laatst online: 23-09 16:49
mag je ook een beschrijvende taal gebruiken ? bijv een SVG (wat uiteindelijk ook maar xml is) ?
of iets gebruiken in de vorm van multipolygonen ?

  • leuk_he
  • Registratie: augustus 2000
  • Laatst online: 21-09 12:08

leuk_he

1. Controleer de kabel!

Flipke84 schreef op maandag 01 november 2010 @ 11:26:
Je mag een punt alleen verbinden als het x of y coordinaat max 2 verschilt niet als beide verschillen (dit zijn de diagonalen).
Dus gewoon afstand bereken (stelling van Pythagoras) tussen punten

http://www.purplemath.com/modules/distform.htm

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • E-Vix
  • Registratie: juni 2000
  • Laatst online: 15:35

E-Vix

Nu met sneeuw!

Een punt ligt dus maximaal 2 van een ander punt af?
In je berekening kijk je volgens mij nu of je X of Y maximaal 2 verschilt. In plaats van een of te gebruiken moet je een en gebruiken.
Het verschil tussen (0,2) en (2,0) is 2 en 2. Tel dit bij elkaar op en je hebt in totaal een verschil van 4; oftewel geen lijn tekenen.

Failed opening '/home/users/7942/signature.inc' for inclusion (include_path='.:') in /home/www/got/userstats.php on line 25


  • MLM
  • Registratie: juli 2004
  • Laatst online: 19-01-2018

MLM

aka Zolo

@E-Vix: en wat dan met (0,0) en (1,1), dat komt bij jou ook op 2 uit ;)

Pseudocode die uitgaat van integer punten, losse hand C#
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
List<Punt> punten = LeesXMLOfzo();
for(int i = 0; i < punten.Count; i++)
{
  for(int j = i + 1; j < punten.Count; j++)
  {
    Punt punt1 = punten[i];
    Punt punt2 = punten[j];
    int dx = Math.Abs(punt1.x - punt2.x);
    int dy = Math.Abs(punt1.y - punt2.y);
    if((dx > 0 || dy > 0) && ((dx <= 2 && dy == 0) || (dx == 0 && dy <= 2))) TekenLijn(punt1, punt2);
    /*of met Pythagoras, vervang bovenstaande 3 regels met: 
    int dx = punt1.x - punt2.x;
    int dy = punt1.y - punt2.y;
    int val = dx * dx + dy * dy;
    if(val == 4 || val == 1) TekenLijn(punt1, punt2);
    */
  }
}

[Voor 20% gewijzigd door MLM op 01-11-2010 14:13]

-niks-

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee