Jump to content
Che

AJUTOR: Orientare in spatiu ?

Recommended Posts

Posted

Salut !

 

d4B4XnB.png

 

Cum fac sa trasez o dreapta (o dreapta, nu parabolica sau curba etc.) prin doua puncte pe care i le da utilizatorul.

Spre exemplu ai o functie my_func CreazaDreapta (float a, float b ) // sau int a si int b

Tu ii dai ca utilizator CreazaDreapta(17, 23) si ea traseaza o dreapta care trece prin punctele 17 si respectiv 23 din sistemul x0y. 

Cum anume sa faca asta ? Habar n-am...

Nu e chiar neaparata nevoie sa "picteze" dreapta ca sa o vezi tu, deci nu e neaparat nevoie de GUI si/sau OGL sau mai stiu eu ce directX etc.

Eu m-am gandit ca ar trebui cumva sa genereze toate punctele de pe dreapta, de la A, la B, din 1 in 1, din 2 in 2 sau din 10 in 10 sau din .05 in .05 (asta sa fie pasul cum ar veni).

Dupa ce le-a generat sa le bage direct intr-un array pentru a ne putea folosi de ele.

Si acum vine parte importanta:

Dreapta poate fi si paralela cu orizontala, si verticala, si oblica ascendent sau descendent (asa cum se vede mai sus in imagine).

Cand dreapta e orizontala sau oblica, se stie care zona este sub ea si care deasupra ei, cand este verticala, atunci spatiul de la dreapta ei se va considera dedesubt, iar cel din stanga ei va fi considerat deasupra.

Problema:

Fata de aceasta dreapta se vor lua niste puncte si functia care determina acest lucru va trebui sa zica daca punctul se afla exact pe dreapta sau daca este deasupra ei sau dedesubtul ei.

Cand punctul este exact pe ea, atunci va returna: "punctul se aflta chiar pe dreapta" si este x.ddff (care e valoarea acelui punct).

Cand punctul este deasupra ei sau dedesubtul ei, se va trasa o dreapta perpendiculara pe orizontala si nu pe dreapta (asa cum se vede in imagini cu linie punctata). Si functia va returna:

"punctul C (sau D sau care o fi el) are valoarea de x.ffsd (care este valoarea punctului respectiv), si nu se afla pe dreapta ci dedesubtul (sau deasupra) acesteia, la distanta de 34.323 de dreapta (practic masoara distanta de la punct la dreapta asa cum este ea trasata in imagine, cu linie punctata si perpendiculara pe orizontala si nu pe dreapta trasata) si intersecteaza dreapta in punctul d.erer (valoarea punctului in care o intersecteaza pe dreapta - punctul de intersectie aflandu-se pe dreapta)."

 

Cum se poate face acest lucru, va rog mult de tot ?

In C#, C, C++, python, php, VB6, VB.NET, java ?

Multumesc mult de tot !

Posted (edited)

Paralel rau cu geometria.

 

1. Ca sa trasezi o dreapta iti trebuie 2 PUNCTE!!!

27 nu este un punct!

un punct e de forma (x,y) ex: (27,30)

tie iti trebuie 2 puncte ex: (27,30) (28,30)

 

2. De ce sa trasezi dreapta? Vrei sa o afisezi utilizatorului?

Daca nu o afisezi nu o trasa. Problema ta poate fi rezolvata doar cu 3 ecuatii.

 

3. Ce ceri tu cu (punct sub dreapta sau deasupra) e o problema de clasa a 11-a (matematica sau informatica). Ecuatiile sunt banale pentru oricine a luat bacul la mate.

 

4. Nu ma complic sa iti explic solutia. Tu vrei sa faci ceva bot de forex ca sa faci bani pt cabinet stomatologic.

Bafta.

 

 

Edit: Daca tu te chinui cu problema asta nu ai nicio sansa sa scrii cod java/c#/c++ sa o rezolve. Chiar daca iti explica cineva.

Edited by yoyois
  • Upvote 6
Posted

Sincer nici de clasa a 10 a nu este ce zici tu. Partea cu programarea nu te pot ajuta dar ca ideie ai putea face o functie care sa faca un punct care are nevoie de doua coordonate X si Y. Dupa sa faci o functie care sa traseze linia dintre cele doua puncte.

Bine ca stii ca XoY este un sistem dar nu sti ca un punct are nevoie de doua coordonate.

Posted
On 8/5/2017 at 2:45 PM, Che said:

Eu m-am gandit ca ar trebui cumva sa genereze toate punctele de pe dreapta, de la A, la B, din 1 in 1, din 2 in 2 sau din 10 in 10 sau din .05 in .05 (asta sa fie pasul cum ar veni).

Dupa ce le-a generat sa le bage direct intr-un array pentru a ne putea folosi de ele.

Nu ai nevoie de asa ceva. Ce faci daca nu iei destul de fin pasul?

 

On 8/5/2017 at 2:45 PM, Che said:

[...] Cum fac sa trasez o dreapta (o dreapta, nu parabolica sau curba etc.) prin doua puncte pe care i le da utilizatorul. [...] Nu e chiar neaparata nevoie sa "picteze" dreapta ca sa o vezi tu, deci nu e neaparat nevoie de GUI si/sau OGL sau mai stiu eu ce directX etc. [...]

Te contrazici oarecum. Indiferent, asta tine de limbaj/api.

 

On 8/5/2017 at 2:45 PM, Che said:

Cum fac sa trasez o dreapta (o dreapta, nu parabolica sau curba etc.) prin doua puncte pe care i le da utilizatorul.

Ecuatia dreptei este y = m*x + b sau f(x) = m*x + b. Tu ai doua seturi de puncte p1(x1, y1) si p2(x2, y2).

Mai intai trebuie sa aflii panta dreptei (adica m) care este data de ecuatia m = (y2 - y1)/(x2 - x1). De notat cazul special x2 - x1 = 0 caz in care dreapta este paralela cu Oy, la distata b de Oy.

Acum ne trebuie si coordonata la origine (adica b) care este data de ecuatia b = y1 - m*x1 sau b = y2 - m*x2.

Explicatia video https://www.youtube.com/watch?v=Ac-XXjFdR_c.

 

 

On 8/5/2017 at 2:45 PM, Che said:

Cand dreapta e orizontala sau oblica, se stie care zona este sub ea si care deasupra ei, cand este verticala, atunci spatiul de la dreapta ei se va considera dedesubt, iar cel din stanga ei va fi considerat deasupra.

Pentru a determina pozitia unui punct fata de dreapta (in cazul in care descrii tu) tot ce trebuie sa faci este sa folosesti ecuatia dreptei, in care vei inlocui x cu x3 (unde x3 este coordonata x a punctului p3 a carui pozitie vrei sa o determini). Daca rezultatul este mai mic decat y3 atunci punctul este deasupra dreptei, daca este egal, punctul este pe dreapta, iar daca este mai mare, punctul se afla sub dreapta.

Pentru cazul special in care dreapta este paralela cu Oy, compari x3 cu b: daca este mai mic, punctul e in stanga dreptei, daca este egal, punctul se afla pe dreapta, iar daca este mai mare, punctul se alfa la dreapta dreptei.

 

 

Sper sa te ajute.

  • Thanks 1
  • Upvote 1
Posted

@u0m3 @Technetium Multumesc mult pentru ajutor !

Sunt inca la stadul de punere la punct a algoritmului. Adica mai intai vreau sa vad cum ar trebui sa fie si pe urma am de gand sa incerc in python si pe urma transpun eu. Dar cred ca de acum ma descruc. Multumesc inca o data !

O seara faina !

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...