Wierzchołki trójkątów w sześciokącie

Wielokąty (n>3). Okręgi. Inne figury płaskie. Zadania i twierdzenia z nimi związane. Geometria rzutowa na płaszczyżnie.
tBane
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 16 mar 2024, o 14:07
Płeć: Mężczyzna
wiek: 29

Wierzchołki trójkątów w sześciokącie

Post autor: tBane »

Witam. Piszę program komputerowy, który wyświetla mapę składającą się z sześciokątów. Chciałbym móc podzielić każdy sześciokąt na elementy składowe ażeby na nich operować. Potrzebuję obliczyć współrzędne v5, v6 ( dla każdego z trójkątów ).
generate-Hexagon-Tiles1.png

Kod: Zaznacz cały

float outerRadius = 10.0f;
float innerRadius = outerRadius * 0.866025404f;
float n = 0.8f;    // ratio

float hexVertices[ ] =
{
    0.0f, outerRadius,
    innerRadius, outerRadius * 0.5f,
    innerRadius, - outerRadius * 0.5f,
    0.0f, - outerRadius,
    - innerRadius, - outerRadius * 0.5f,
    - innerRadius, outerRadius * 0.5f,
    0.0f, outerRadius
};

// ... --- ... //

for(int direction=0; direction<6; direction++)
{
    v1x = hexVertices[2*direction] * n;
    v1z = hexVertices[2*direction+1] * n;

    v2x = hexVertices[2*(direction+1)] * n;
    v2z = hexVertices[2*(direction+1)+1] * n;

    v3x = hexVertices[2*direction];
    v3z = hexVertices[2*direction+1];

    v4x = hexVertices[2*(direction+1)];
    v4z = hexVertices[2*(direction+1)+1];

    float d = (1.0f - n) * outerRadius / 2.0f;    // distance betweem |v3 v5| or |v4 v6|

    // v5x = v1x ...
    // v5z = v1z ...

    // v6x = v2x ...
    // v6z = v2z ...

}
Ostatnio zmieniony 16 mar 2024, o 14:37 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Nie linkujemy zdjęć, tylko załączamy jako załączniki.
matmatmm
Użytkownik
Użytkownik
Posty: 2283
Rejestracja: 14 cze 2011, o 11:34
Płeć: Mężczyzna
Lokalizacja: Sosnowiec
Podziękował: 88 razy
Pomógł: 351 razy

Re: Wierzchołki trójkątów w sześciokącie

Post autor: matmatmm »

Jeśli dobrze rozumiem, to chcesz policzyć współrzędne punktu o numerze 5 na trzecim obrazku. Jeśli Twój algorytm poprawnie liczy współrzędne punktów od 1 do 4, to proponuję wprowadzić pomocniczo punkt \(\displaystyle{ H}\) jak na poniższym obrazku. Wtedy punkt \(\displaystyle{ F}\) wyraża się jako środek odcinka \(\displaystyle{ DH}\), a wektor \(\displaystyle{ \vec{BH}}\) ma te same współrzędne, co \(\displaystyle{ \vec{CE}}\).

Czyli \(\displaystyle{ F= \frac{1}{2}(D+H)=\frac{1}{2}(D+ B+ E-C)}\).


hex.png
ODPOWIEDZ