Autor Wątek: Krzywe Lissajousa  (Przeczytany 959 razy)

Offline Tobix10

  • Użytkownik

# Czerwiec 03, 2009, 21:20:21
Chciałem się upewnić czy na pewno dobrze zrobiłem funkcję rysującą krzywe Lissajousa. Korzystam z Windows GDI :) .
Mam jeszcze jedno pytanie, ponieważ zrobiłem przesunięcie(to te g_ScreenWidth, g_ScreenHeight), żeby początek układu współrzędnych był na środku obszaru roboczego, a nie w lewym górnym rogu. Teraz jak chce skorzystać z LineTo to zawsze będę miał kreskę od PUW do pierwszego punktu tej krzywej. Czy jest jakieś inne rozwiązanie tego problemu niż moje, czyli wstępne obliczenie pierwszych punktów i przesunięciu tam pióra(MoveToEx) .

To jest totalnie do kitu napisana funkcja, chodzi mi o samo rysowanie krzywych. W końcowych programie zrobię wszystko na cacy :D.
Kod: (cpp) [Zaznacz]
double A = 1, B = 1, Wa = 9, Wb = 8;
const double PI = 3.14159265;

double x, y;

x = A * sin((Wa * -360) * PI / 180.0f);
y = B * sin((Wb * -360) * PI / 180.0f);
MoveToEx(g_hDC, x*100 + g_ScreenWidth, -y*100 + g_ScreenHeight, NULL);
for(int t = -360; t < 360; ++t)
{
x = A * sin((Wa * t) * PI / 180.0f);
y = B * sin((Wb * t) * PI / 180.0f);
LineTo(g_hDC, x * 100 + g_ScreenWidth, -y * 100 + g_ScreenHeight);
//SetPixel(g_hDC, x * 50 + g_ScreenWidth, -y * 50 + g_ScreenHeight, RGB(0,0,0));
}

Aha i jak najlepiej rozwiązać sprawę skalowania ?
« Ostatnia zmiana: Czerwiec 03, 2009, 22:04:37 wysłana przez Tobix10 »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline maciek_slon

  • Użytkownik

# Czerwiec 04, 2009, 01:22:38
WinAPI udostępnia funkcje zmieniające logiczny układ współrzędnych urządzenia (hDC) na którym malujesz. Za pomocą kilku funkcji można zmienić położenie środka układu i skalę. Szukaj haseł SetMapMode, SetWindowOrgEx, SetViewportOrgEx.

Offline Tobix10

  • Użytkownik

# Czerwiec 04, 2009, 16:24:44
ale samo obliczanie współrzędnych jest ok ?
Bardziej interesowałoby mnie czy DX udostępnia jakąś funkcją rysującą linię z możliwością włączenia AA.

Offline revo

  • Użytkownik

# Czerwiec 04, 2009, 18:30:24
Bardziej interesowałoby mnie czy DX udostępnia jakąś funkcją rysującą linię z możliwością włączenia AA.

Do takich prostych rzeczy można użyć GDI+ , jest tam rysowanie z AA (SetSmoothingMode).