Podpowiedź??? Może trafna....
w pierwszym zadaniu mowa jest o parametrze t, który się zmienia od 0 do 2(pi)n, gdzie n jest takie, że a*n jest całkowite. Jeżeli n ma być typu int to moja propozycja co do jej wartości jest taka (nic lepszego o tej porze nie mogłem wymyśleć:))
n=int(1/(a-int(a)));
jak duży krok pętli mamy obrać (co ile zmieniać się będzie t - na pewno będzie to po przecinku). może metodą prób i błędów - zaczynając od góry a kończąc na takiej wartości, że niższa nie robi różnicy w wykresie...
///
Dziurawa ta koncepcja jest.... ale wymyśliłem lepszą, która działa. Otóż:
int N(double a) { int n=1; while ((n*a-int(n*a))!=0) n++; return n; }
Ostatnio edytowany przez januszs (2011-04-15 00:13:22)
Offline
ja narazie takie cos wymyslilem ale nie rysuje mi tak jak powinien
{ int i; x=0; y=0; t=0; p=3.14; a=2; i=2*p*100; fi=p*90/180; for (int g=1; g<=i; g++) { // do sprawdzania czy zmienne sie zmieniaja /* CString s; s.Format(_T("x=%lf"),x); pDC->SetTextColor(RGB(255, 0, 0)); pDC->TextOutW(100,200,s); s.Format(_T("y=%lf"),t); pDC->SetTextColor(RGB(255, 0, 0)); pDC->TextOutW(180,200,s); */ // ile ma dodawac przy funkcji for t=t+0.01; x=sin(t); y=sin(a*t+fi); // rysowanie po pixelach pDC->SetPixel(200*x, 200*y, c); } }
Offline
może to wynikać ze samego sposobu rysowania. x i y przyjmują bardzo małe wartości a rysowanie po pixelach daje marny efekt. użyj funkcji moveto(x*200,y*200) w pierwszym kroku i lineto(x*200,y*200) w następnych. to powinno pomóc
///
ja u siebie rozwiązałem rysowanie mniej więcej jak ci zaproponowałem, tym, że skalowanie mam inne no i oczywiście przechwycenie zamiany rozmiaru okna. kod na chomiku
Ostatnio edytowany przez januszs (2011-04-15 22:29:46)
Offline
patrzylem na twoj kod. 2 rzeczy w sumie sa jeszcze tylko zle, a mianowicie:
- rysunek powinien zaczac sie rysowac od srodka okna
- rysunek powinien byc wyskalowany na caly obszar roboczy okna
Offline
- na cały obszar okna - czyli deformacja... wtedy trzeba dokonać korekty i zrobić skalax=rc.right/2 i skalay=rc.bottom/2
- rysowanie od środka okna? ok przesx : rc.right/2, przesy : rc.bottom/2
o to chodziło?
///
poprawione
wariacja nt zad2
Ostatnio edytowany przez januszs (2011-05-18 16:32:35)
Offline