Punkty dla przecięcia prostych.

0

a

2

Wśród wszystkich par znajdź parę o najmniejszej odległości, z pozostałych - kolejną parę ...
skrzyżowanie (prostej przez A,B) z (prostą przez C,D):

x=((Bx-Ax)*(Dx*Cy-Dy*Cx)-(Dx-Cx)*(Bx*Ay-By*Ax))/((By-Ay)*(Dx-Cx)-(Dy-Cy)*(Bx-Ax))
y=((By-Ay)*(Dx*Cy-Dy*Cx)-(Dy-Cy)*(Bx*Ay-By*Ax))/((By-Ay)*(Dx-Cx)-(Dy-Cy)*(Bx-Ax))
0

Dragon, głupio mnie prosić, ale czy mógłbyś wykonać w całości taki program? Normalnie bym nad tym posiedział, ale jutro mam oddanie tego projektu,a mam jeszcze sporo do zrobienia...

8

Nie jestem instytucją charytatywną.

0

funkcja do obliczania wzoru prostej korzysta z http://matematyka.pisz.pl/strona/1223.html
funkcja do obliczania wspólnego punktu powinna korzystać z prostego układu współrzędnych.
ja zwykle robię na opak ale może się przyda:

#include <iostream>
#include <conio.h>
#include <cstring>
#include <windows.h>
using namespace std;

struct sABC{
    double a;
    double b;
    double c;
};

bool f_PunktPrzeciecia( POINT *p, struct sABC f1, struct sABC f2){

}
bool f_abc(struct sABC *wsk, POINT P1, POINT P2){
    wsk->b = 1;
    if((P2.x - P1.x) == 0)
     return false;
    wsk->a = (P2.y - P1.y)/(P2.x - P1.x);
    wsk->c = ((-1 * (P2.y - P1.y) * P1.x) + ((P2.x - P1.x) * P1.y)) / (P2.x - P1.x);
};

int main()
{
    POINT P, P1, P2;

    P1.x = 5; P1.y = 0;
    P2.x = 3; P2.y = 2;
    struct sABC ABC1;
    f_abc(&ABC1, P1, P2);
    cout<<"funkcja na prosta o 2 punktach (" << P1.x << "," << P1.y << ") oraz (" << P2.x << "," << P2.y << ")" << endl;
    cout<<"y = "<<ABC1.a<<"x+"<<ABC1.c<<endl;

    P1.x = -3; P1.y = 0;
    P2.x = -2; P2.y = 5;
    struct sABC ABC2;
    f_abc(&ABC2, P1, P2);
    cout<<"funkcja na prosta o 2 punktach (" << P1.x << "," << P1.y << ") oraz (" << P2.x << "," << P2.y << ")" << endl;
    cout<<"y = "<<ABC2.a<<"x+"<<ABC2.c<<endl;
    
    f_PunktPrzeciecia(&P, ABC1, ABC2);
}
 

jak napiszesz funkcję f_PunktPrzeciecia(); w strukturze P będziesz miał punkt przecięcia.
Ja bym przeciął każdą prostą ze sobą, zapisał gdzieś wartości i potem wzorem na długość odcinka sprawdził, która z którą pierwej się połączyły :)

0

Twój problem nie jest jednoznaczny. Co jeśli jeden punkt jest w środku a pozostałe 7 równo rozłożone na okręgu?
W takim wypadku nie ma rozsądnej metody pogrupowania tych punktów. Przykładowo który punkt ma być połączony z tym w środku?
Tak samo jak już będziesz miał pary punktów, to możliwych przecięć prostych biedzisz maił nie 4 ale 6, więc to też trzeba jakoś ujednoznacznić.
Może lepiej wpisz tu całą treść swojego zadania.

0

nigdy tak nie będzie że wyjdzie jeden pkt w środku a pozostałe na okręgu, te pkt zawsze będą w 4 kupkach po 2 pkt. Na obrazku którym wrzuciłem jest efekt końcowy po prostu. Normalnie jest to kartka papieru która ma na bokach takie znaczniki(rogi tych znaczników to punkty n), a punkty p określają rogi tej kartki papieru.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.