Êîìáèíàòîðèêà. PyGame
? òåìà ïî Linux
?? íåîáÿçàòåëüíàÿ òåìà
- Íàèáîëåå ýôôåêòèâíîå âû÷èñëåíèå êîëè÷åñòâà ëîìàíûõ íà îêðóæíîñòè. Èñïîëüçîâàíèå ïðåäâû÷èñëåííûõ çíà÷åíèé ôóíêöèé.
Ââåäåíèå â PyGame
Äîìàøíåå çàäàíèå
? òåîðåòè÷åñêîå çàäàíèå
? íîâàÿ òåìà
- Ðåàëèçîâàòü ýôôåêòèâíûé àëãîðèòì äëÿ ëîìàíûõ íà îêðóæíîñòè (çäåñü áóäåò ññûëêà íà ìàòåìàòèêó ñ äîñêè).
Ïîñòàâèòü ñåáå PyGame, îñâîèòüñÿ â äîêóìåíòàöèè
Íà PyGame íàïèñàòü ïðîãðàììó äëÿ ðèñîâàíèÿ ãðàôèêà ôóíêöèè êðàñèâî. Ëèáî ðèñîâàòü ëîìàíóþ, ëèáî çàïîëíÿòü òî÷êè ýêðàíà ñ ïîìîùüþ fill. Ïîñëåäíåå ïðåäïî÷òèòåëüíåå, ò.ê. ðàáîòàåò áûñòðåå.
- ñ ïîìîùüþ fill íàðèñîâàòü îòðåçîê íà ýêðàíå.
- êàêîé-íèáóäü
- òîëùèíîé 2-3 ïèêñåëÿ
- äîáàâèòü anti-aliasing (ñãëàæèâàíèå êðàåâ ëèíèè ìåòîäîì äîðèñîâûâàíèÿ ïèêñåëåé ïðîìåæóòî÷íîãî öâåòà)
- íàðèñîâàòü ãðàôèê íåëèíåéíîé ôóíêöèè
- ñ ïîìîùüþ fill íàðèñîâàòü îòðåçîê íà ýêðàíå.
Î ïðîâåäåíèè ëèíèé (ïî ñóòè ? ïðÿìîóãîëüíèêîâ)
Ðàñòåðèçàöèÿ îòðåçêîâ íà Âèêèïåäèè.  íàøåì ñëó÷àå ýòè àëãîðèòìû íå âïîëíå ïðèãîäíû.
Îáùèé ìåòîä: ðàññìîòðèì äâå ïàðàëëåëüíûå ïðÿìûå (ãðàíèöû ?òîëñòîé? ëèíèè). Òî÷êè ðàñòðà, öåëèêîì ñîäåðæàùèåñÿ ìåæäó ïðÿìûõ, çàêðàñèì ÷åðíèëàìè. Òî÷êè ðàñòðà, ÷àñòè÷íî ëåæàùèå âíóòðè îáëàñòè, çàêðàñèì öâåòîì, ñìåøàííûì èç ÷åðíèë è èñõîäíîãî öâåòà òî÷êè â ïðîïîðöèè, ñîîòâåòñòâóþùåé ïëîùàäè ïåðåêðàøèâàåìîé ÷àñòè òî÷êè.
Åñëè ñ÷èòàòü òî÷êè ðàñòðà êâàäðàòíûìè, ïðèäåòñÿ èìåòü äåëî ñ ïëîùàäüþ 3-,4- è ïÿòèóãîëüíèêîâ (èñõîäíèê êàðòèíêè â ôîðìàòå KSEG):
Îäíàêî âû÷èñëÿòü ïëîùàäü ïîëó÷åííîãî ìíîãîóãîëüíèêà äîâîëüíî ìóòîðíî, ìîæíî ïîñ÷èòàòü òî÷êè ðàñòðà êðóãëûìè (ýòî â ÷åì-òî ïðàâäà) è âû÷èñëÿòü ïëîùàäü ñåãìåíòà (èñõîäíèê êàðòèíêè â ôîðìàòå KSEG):
Àëãîðèòì ïåðåáîðà òî÷åê âíóòðè îáëàñòè ìîæíî ïîëó÷èòü èç àëãîðèòìà Âó. Äëÿ ïðîñòîòû âû÷èñëåíèÿ çàìåòèì, ÷òî äëÿ ýòîãî àëãîðèòìà ðàçëè÷àþòñÿ 8 íàïðàâëåíèé, èç êîòîðûõ 4 ïîëó÷àþòñÿ èç äðóãèõ 4 ðèñîâàíèåì îò êîíöà ê íà÷àëó (èñõîäíèê êàðòèíêè â ôîðìàòå KSEG):
Íà÷àëî êîîðäèíàò, â ñòèëå PyGame, ëåâûé âåðõíèé óãîë. Äëÿ ïðîñòîòû íà÷àëüíàÿ òî÷êà A ïîìåùåíà â íà÷àëî êîîðäèíàò. Èìååì 4 ðàçëè÷íûõ ïàðàìåòðà àëãîðèòìà (ñëó÷àè AB?, ãäå Y>0 àíàëîãè÷íû B?A):
AB |
|X|>|Y| |
X™0, Y™0 |
AB' |
|X'|˜|Y'| |
X'™0, Y'™0 |
AB" |
|X"|˜|Y'| |
X"<0, Y'™0 |
AB"' |
|X"'|>|Y| |
X"'<0, Y™0 |
Âîïðîñû ?÷òî ðèñîâàòü â íà÷àëå è â êîíöå îòðåçêà?? è ?êàê ðèñîâàòü ëèíèè òîëùèíîé < 2**0,5?? íå ðàññìàòðèâàþòñÿ