Twoim zadaniem jest animowanie iluzji tego kręgu . Wygląda na to, że punkty obracają się wewnątrz koła, ale w rzeczywistości poruszają się one w linii prostej.
Kryteria
- Wynik musi być animowany. Sposób, w jaki animacja jest nieistotna, może wygenerować
.gif
, może narysować okno, ekran urządzenia lub cokolwiek innego. - To konkurs popularności, więc możesz chcieć dodać dodatkowe funkcje do swojego programu, aby uzyskać więcej głosów pozytywnych, na przykład zmieniając liczbę punktów.
- Zwycięzca jest najbardziej pozytywnie ocenioną ważną odpowiedzią 7 dni po ostatnim ważnym zgłoszeniu.
- Odpowiedzi, które faktycznie wprowadzą punkty poruszające się po liniach prostych, a nie odwrotnie, są mile widziane
Odpowiedzi:
Python 3.4
Korzystanie z modułu żółwia. Żółwie mają różne kolory i zawsze skierowane są w tym samym kierunku, dzięki czemu można łatwo zobaczyć, jak poruszają się po prostych liniach, skupiając się tylko na jednym z nich. Mimo to iluzja kół jest nadal silna.
Iluzja wciąż wydaje się dość silna nawet przy 3 lub 4 żółwiach:
Liczba klatek na sekundę jest znacznie zmniejszona dla wszystkich tych przykładów GIF, ale wydaje się, że nie umniejsza iluzji. Lokalne uruchomienie kodu zapewnia płynniejszą animację.
Dla kontrastu oto kilka, które naprawdę się obracają:
... czy oni?
Kod można uruchomić z 5 opcjonalnymi argumentami: zapełnianie, rozdzielczość, pętle, odwracanie i wiersze.
population
to liczba żółwiresolution
to rozdzielczość czasowa (liczba klatek animacji na powtórzenie)loops
określa, ile razy żółwie zapętlają się na sobie. Domyślna wartość 1 daje standardowy okrąg, inne liczby nieparzyste dają tę liczbę pętli w ciągu żółwi, podczas gdy liczby parzyste dają ciąg żółwi odłączonych na końcach, ale wciąż z iluzją zakrzywionego ruchu.flip
jeśli niezerowa powoduje, że żółwie obracają się w kierunku swojej podróży powrotnej (zgodnie z sugestią azylu , aby nigdy nie cofały się). Domyślnie utrzymują stały kierunek, aby uniknąć rozproszenia wzrokowego w punktach końcowych.lines
jeśli niezerowa wyświetla linie, po których poruszają się żółwie, dla zachowania spójności z przykładowym obrazem w pytaniu.Przykłady z
flip
zestawem, zi bezlines
. Zostawiłem swój główny przykład powyżej bez odwrócenia, ponieważ wolę nie wykonywać sporadycznego skoku, ale krawędź koła wygląda gładko z wyrównanymi wszystkimi żółwiami, więc istnieje możliwość wyboru stylu, który preferują podczas biegania kod.Może nie być od razu oczywiste, jak powyższe obrazy zostały utworzone z tego samego kodu. W szczególności obraz dalej w górę, który ma powolną pętlę zewnętrzną i szybką pętlę wewnętrzną (tę, która wygląda jak kardioida, którą ktoś przypadkowo upuścił). Ukryłem wyjaśnienie tego poniżej na wypadek, gdyby ktoś chciał opóźnić odkrycie podczas eksperymentowania / myślenia.
Próbując różnych liczb, zauważyłem, że niektóre z tych zniekształceń są bardziej interesujące niż bardziej symetryczne oryginały, więc chciałem je tutaj zamieścić ...
źródło
do
Wynik:
źródło
system("cls"); // xD
SVG (bez Javascript)
Link do JSFiddle tutaj
źródło
http://jsfiddle.net/z6vhD/13/
intervaltime
zmienia FPS (FPS = 1000 / interwał).balls
zmienia # piłki.maxstep
dostosowuje liczbę kroków w cyklu, tym większe jest „wygładzenie”. 64 powinno być wystarczająco duże tam, gdzie wydaje się gładkie.Modelowany jako ruch koła, zamiast przesuwania kulek wzdłuż linii, ale efekt wizualny (powinien być?) Taki sam. Część kodu jest dość szczegółowa, ale to nie jest golf golfowy, więc ...
źródło
requestAnimationFrame
zamiast tego weź . Zmodyfikowano użycie JSFiddlerequestAnimationFrame
.Animacje CSS
Rozwiązanie wykorzystujące tylko animacje css (patrz animacja na JSFiddle - zauważ, że dodałem przedrostki specyficzne dla przeglądarki w skrzypcach, aby mogło działać w najnowszych wersjach).
źródło
-webkit-
dla bazujących na Webkit i-moz-
Mozilli) Oto to samo skrzypce ze zaktualizowanymi prefiksami: jsfiddle.net/nBCxz/3Matematyka
Oto całkiem proste przesłanie.
Jeśli zadzwonisz
animateCircle[32]
, otrzymasz ładną animację z 32 liniami i okręgami.W Mathematica jest całkowicie gładka, ale musiałem trochę ograniczyć liczbę klatek na GIF.
Co się stanie, jeśli umieścisz dwie płyty w każdej linii? (To znaczy, dodaj
Disk[-Sin[t + phase]*line, 0.05]
do listy wMap
.)Możesz także ustawić je o 90 ° poza fazą (użyj
Cos
zamiast-Sin
):źródło
{t, 0, 2 \[Pi]}
aby{t, 0, 2 \[Pi] - 2 \[Pi]/60, 2 \[Pi]/60}
nie było dwóch identycznych ramek i zmienićAnimate
naTable
. Następnie będziesz mógł wyeksportować GIF.Animate
). Spróbuję jednak użyćTable
ponownie.Wykres kołowy VBScript + VBA + Excel
To sprawi, że twój procesor trochę płacze, ale wygląda ładnie i uważam, że działa zgodnie ze specyfikacją. Użyłem odpowiedzi @ Fabricio jako przewodnika po implementacji algorytmu ruchu koła.
EDYCJA: Wprowadzono pewne poprawki, aby poprawić szybkość renderowania.
Kod:
źródło
Excel, 161 bajtów
A2 (kropka) określa czas (w sekundach) pełnego „obrotu”.
Każda komórka w liniach jest podstawowym warunkiem związanym z wartością odpowiedniej linii. Na przykład K2 to:
A komórka środkowa (K9) to:
Wymuś animację, przytrzymując klawisz „usuń” na losowej komórce, aby stale uruchamiać odświeżanie.
Wiem, że jest to stary temat, ale ostatnie działania doprowadziły go na szczyt i z jakiegoś powodu wydawało się to atrakcyjne. Słuchacz PCG od dawna, osoba dzwoniąca po raz pierwszy. Bądź delikatny.
źródło
Tylko dla zabawy z PSTricks.
źródło
Fortran
Każda ramka jest tworzona jako osobny plik gif przy użyciu modułu Fortran gif pod adresem : http://fortranwiki.org/fortran/show/writegif
Następnie oszukiwam za pomocą ImageMagick, aby scalić poszczególne gify w jeden animowany gif.
AKTUALIZACJA: Ustaw nowy = .prawda. aby uzyskać następujące:
źródło
Obowiązkowa wersja C64 .
Skopiuj i wklej w swoim ulubionym emulatorze:
źródło
Kompaktowa wersja javascript, zmieniająca ustawienia domyślne na coś innego
http://jsfiddle.net/yZ3DP/1/
HTML:
JavaScript:
źródło
bw=10
). Edytuj swoją odpowiedź, aby wyświetlić kod. Aha, i podczas gdy jesteś na to, że to błąd należy naprawić zamienićtime+i*0.39*0.29
zetime+i*Math.PI/num
w obliczeniach trygonometrycznych tak, że współrzędne są obliczone prawidłowo dla każdej wartościnum
. (PS Zaktualizowano tutaj JSFiddle . Witamy w codegolf.stackexchange.com)Moje podejście do Wiązu . Jestem całkowicie początkującym, który chętnie zaakceptuje PR w celu ulepszenia tego rozwiązania ( GitHub ):
Zauważ, że to przesłanie naprawdę porusza punkty na liniach prostych:
źródło
Second Life LSL
początek obrazu alfa żółwia (kliknij prawym przyciskiem myszy poniżej, aby zapisać obraz)
koniec obrazu alfa żółwia (prawym przyciskiem myszy powyżej, aby zapisać obraz)
budowanie obiektu:
zrób korzeń pierwotny rozmiar cylindra <1, 1, 0,01> plasterek 0,49, 0,51, kolor < 0, 0, 0>
uczyń opis tego cylindra „8,1,1,1” bez cudzysłowów (bardzo ważne)
utwórz cylinder, nazwij go „cyl”, kolor <0,25, 0,25, 0,25> alfa 0,5
zduplikuj cyl 48 razy
stwórz pudełko, nazwij je „kula”, kolor <1, 1, 1> przezroczystość 100 oprócz górnej przezroczystości 0
umieść teksturę żółwia na powierzchni 0 pudełka, żółw powinien stawić czoła + x
powielić pole 48 razy
zaznacz wszystkie pudełka i cylindry, pamiętaj, aby wybrać cylinder główny jako ostatni,link (kontrola L)
umieść te 2 skrypty w katalogu głównym:
źródło