İçindekiler:

Tasarımcılar için İlginç Programlama Rehberi--Resminizi Çalıştırın (İkinci Kısım): 8 Adım
Tasarımcılar için İlginç Programlama Rehberi--Resminizi Çalıştırın (İkinci Kısım): 8 Adım

Video: Tasarımcılar için İlginç Programlama Rehberi--Resminizi Çalıştırın (İkinci Kısım): 8 Adım

Video: Tasarımcılar için İlginç Programlama Rehberi--Resminizi Çalıştırın (İkinci Kısım): 8 Adım
Video: Harvard Üniversitesi CS50 Bilgisayar Bilimine Giriş 2023 - 3. HAFTA ALGORİTMALAR 2024, Eylül
Anonim
Tasarımcılar için İlginç Programlama Rehberi--Resminizi Çalıştırın(İkinci Kısım)
Tasarımcılar için İlginç Programlama Rehberi--Resminizi Çalıştırın(İkinci Kısım)

Matematik, çoğunuz için işe yaramaz görünüyor. Günlük hayatımızda en yaygın olarak kullanılan sadece toplama, çıkarma, çarpma ve bölmedir. Ancak, programla oluşturabiliyorsanız, oldukça farklıdır. Ne kadar çok bilirseniz, o kadar harika sonuç alırsınız.

Adım 1: Hareket ve İşlev

Zevkinizi uyandırmak için size bilinmeyen birkaç resim göstereyim.

Bu nedir? Şimdi sadece bu soruyu önce tut, sonra bileceksin ve kullanacaksın.

Son bölümde, statik grafikleri dinamik hale getirebilecek fonksiyon kurulumunu ve fonksiyon çizimini öğrendik. Ancak, bu hareket biçimi çok basittir. Grafiklerimizi kendi karakterleri ile çalıştırmak için daha önce ustalaştığımız fonksiyon bilgisini kullanacağız.

Yukarıdaki resimlerden kaç tane fonksiyon tanıyabilirsiniz? Hareketle nasıl bir ilişkileri var? Şimdi ondan ikinci dereceden bir fonksiyon alalım, rastgele bazı parametreler ekleyelim ve ne olacağını görelim. Örneğin, y = x² / 100.

İşlev görüntüsü böyle görünüyor. Aşağıdaki kodu kopyalayın.

[cceN_cpp theme="şafak"] kayan nokta x, y; void setup(){ size(300, 300); arkaplan(0); x = 0; } geçersiz çizim(){ vuruş(255); vuruş Ağırlığı(2); y = pow(x, 2) / 100.0; //İşlev gücü, atama numarasının n'inci kuvvetine dönecektir. (x, 2) x'in karesini temsil eder. İlk parametre taban numarası, ikincisi ise indekstir. nokta(x,y); x++; } [/cceN_cpp]

Koşu Etkisi

Ardından, günah işlevini seçin. Formül: y = 150 + günah(x).

Aşağıdaki kodu kopyalayın.

[cceN_cpp theme="şafak"] kayan nokta x, y; void setup(){ size(300, 300); arkaplan(0); x = 0; } void draw(){ y = yükseklik/2 + sin(radyan(x)) * 150; //Fonksiyon radyan x'i açıya dönüştürür. x++; vuruş(255); vuruş Ağırlığı(2); nokta(x,y); } [/cceN_cpp]

Koşu Etkisi

Kodu çalıştırdıktan sonra elde ettiğimiz grafik budur. Ve bu onların hareket izleri. İlkiyle karşılaştırıldığında, sonuç açıktır. Fonksiyon görüntüsü aslında hareket izine karşılık gelir! Bu yeterince basit. Sadece x, y'nin değerini koordinatta değiştirmelisiniz. İlk çizdiğimiz iz, y = x² / 100 fonksiyonunun grafiğine eşdeğerdir. İkinci iz, y = 150 + sin(x) fonksiyonunun grafiğine eşittir. Ancak programda y ekseninin yönü terstir. Yani orijinal grafiğe kıyasla parkur baş aşağı olacak. Şimdi, sanırım uzun zamandır kafanızda dolaşan bazı zor soruların hemen çözüldüğü hissine kapılıyorsunuz. Daha önce öğrendiğimiz bu harika fonksiyonların grafik hareketlerini kontrol etmek için kullanılabilmesi inanılmaz!

Adım 2: Fonksiyon Yazmak İçin

Aşağıda sık kullanılan birkaç işlevi listeledim. Umarım bunlar, işlevleri bilgisayar tarafından tanınabilecek kodlara çevirmemize yardımcı olabilir.

Bu nedenle programda aşağıdaki formül şu şekilde yazılacaktır:

y = x² → y = pow(x, 2) veya y = sq(x)

y = x³ → y = pow(x, 3)

y = xⁿ → y = pow(x, n)

y = 4ⁿ → y = pow(4, n)

y =logₑ² → y = log(2)

y = e² → y = exp(2)

y = √5 → y = kare(5)

Ayrıca programa rastgele bir fonksiyon yazabilir ve hareket izinin nasıl görüneceğini görebilirsiniz. Değer alanı ve tanım alanı aralığını göz önünde bulundurmayı unutmayın, yoksa grafiğiniz ekranınızın dışında kalır.

Trigonometrik fonksiyon

Şimdi, trigonometrik fonksiyonların bazı yazılarını bilmek için daha ileri gidelim.

Programda, fonksiyon parametresinin açıya göre girişinin radyanı benimsemesine dikkat etmeliyiz. Böylece sin90° sin(PI/2)'ye yazılacaktır. Bu yönteme aşina değilseniz, açıyı önceden radyana dönüştürmek için randyan işlevini kullanabilir ve ardından sin(radyan(90) yazabilirsiniz).

İşlev derecelerinin kullanımı nispeten zıttır. Radyanı açıya dönüştürebilir. Doğrudan düzenleme alanına print(degrees(PI/2)) girin ve ne elde edeceğinizi görün.

Adım 3: Trigonometrik Fonksiyonla Grafik Hareketini Kontrol Edin

İşte size grafik hareketinin gerçek etkisini görmeniz için bir vaka.

[cceN_cpp theme="şafak"] kayan nokta x, y; void setup(){ size(700, 300); } geçersiz çizim(){ arka plan(234, 113, 107); y = günah(radyan(x)) * 150 + 150; x++; noStroke(); elips(x, y, 50, 50); } [/cceN_cpp]

Fonksiyon günah periyodik bir fonksiyondur. Minimum değeri -1 ve maksimum değeri 1'dir. Ekranın yüksekliği 300'dür. y = sin(radyan(x)) * 150 + 150 olarak adlandırılır, bu nedenle y değerinin değişim aralığı 0 içinde iyi kontrol edilecektir. 300'e kadar.

Dönen Daire

Evet, nihayet bu bölümün en önemli kısmına geldik. Bir programda daire yolu nasıl çizilir? Bunu görüntülemek için işlevler nasıl kullanılır? Bu yazının başında gördüğümüz iki resmi tekrar göstereyim.

Aslında çevre koordinatı ve trigonometrik fonksiyon arasındaki ilişkiyi görsel olarak ortaya koydular. Yukarıdaki resimlerdeki hareket, sürekli artan bağımsız değişken θ tarafından yönlendirilir. Sol, sin ve cos fonksiyonunun görüntüsüdür ve sağ, haritalandıktan sonra dairesel hareket yapan bir noktayı temsil eder. çok akıllıca değil mi Artık gizemli değil. Bunu gerçekleştirmek için kodu kullanabilirsiniz.

Basit bir örnek:

[cceN_cpp theme="şafak"] kayan nokta x, y, r, R, açı; void setup(){ size(300, 300); r = 20; //Daire çapı R = 100; //Hareket yolunun yarıçapı x = 0; açı = 0; y = yükseklik/2; } void draw(){ arka plan(234, 113, 107); çevir(genişlik/2, yükseklik/2); //Orijinal noktayı ekran merkezine taşıyın. noStroke(); x = R * cos(açı); y = R * günah(açı); elips(x,y,r,r); açı += 0.05; } [/cceN_cpp]

Bakmak! Dönen bir daire belirir! Burada, bağımsız değişken artık sabit artış açısında değildir (resimde θ'ye eşittir). Açı için stand. Bunların arasında, xy, daire hareket yarıçapının (R yarıçap içindir) uzamasına yol açan, göreceli olarak çarpılmış R katsayısına sahiptir. R ile çarpmayacaksa, hareket yolu -1 ile 1 aralığında sınırlandırılacaktır.

Neden artan x kullanmıyorsunuz? Fonksiyonun kendi özelliğine göre, tanım alanı içindeki herhangi bir x, kendisiyle eşleşen tek y'ye sahiptir. Yani düzlem dikdörtgen boyut koordinat sisteminde, doğrudan daire çizmek için “basit bir fonksiyon” bulamazsınız. Yani artık bu formatı kullanamayız.

y = (x'in bilinmeyen ifadesi?);

x++;

Bu yüzden fikrimizi değiştirmeliyiz. Bağımsız değişken olarak başka bir açı seçin ve ardından onu yatay ve dikey koordinatlara dönüştürmek için sin ve cos fonksiyonlarını kullanın.

x = R * cos(açı);

y = R * günah(açı);

açı += 0.05;

Bazılarınız bunun neden daire hareketinin yolunu gösterebildiğini merak edebilir. Trigonometrik fonksiyonun tanımına göre, bu fonksiyonun karşı tarafın hipotenüse oranına göre kolayca akıl yürütebiliriz; fonksiyon cos, komşunun hipotenüse oranıdır. Daire noktası nerede olursa olsun, r (yarıçap) değişmeyecektir. Bu nedenle, x koordinatı ve y koordinatının ifadesini sonuçlandırabiliriz.

Bu matematiksel bir kılavuz olmadığı için, burada size trigonometrik fonksiyon hakkında daha fazla bilgi göstermeyi bırakacağım. Bilmek isterseniz veya sadece unutursanız, kendiniz tekrar gözden geçirmeyi deneyebilirsiniz.

Tabii ki, tam olarak anlayamadıysanız sorun değil. Sadece bir daire çizmek için nasıl kullanılacağını bilmeniz gerekir. Bu da bir tür “programlama fikri”. Daha sonra, belirli bir tür işlevi gerçekleştirmek için başkaları tarafından yapılmış mevcut modüllerden bazılarına sık sık başvuracağız. Sadece ayrıntılı olarak bilmek için kendinizi zorlamayın.

Ancak, sin ve cos işlevi yaygındır. Daha yüksek seviyeli yaratım yapmak istiyorsanız, bunu iyice öğrenmeye çalışsanız iyi olur. Bu sorunun kendisi kendimizi daha fazla matematiksel bilgi öğrenmeye itebilirse, sizin araştırmanızı bekleyen daha ilginç şeyler var.

Bunlar trigonometrik fonksiyonla yakından ilgili resimlerdir.

Adım 4: Hareket Koordinat Sistemi

Önceki etkilerin tamamı grafik koordinat değişiklikleriyle ilgilidir. Koordinat sisteminin kendisi statiktir. Aslında hareket etkisini gerçekleştirmek için koordinat hareketini yapabiliriz. Bu tıpkı sahildeki insanların teknedeki diğer insanları izlemesi gibi. Teknedeki insanlar için tekne statiktir. Ama ya teknenin kendisi hareket ediyorsa, o zaman teknedeki insanlar da onunla birlikte hareket eder. Eski vakalar tamamen “teknede koşan insanlar” ile ilgili. Aslında tekne hareket etmiyor. Aşağıda, koordinat sistemini değiştirmek için bazı yaygın işlevler verilmiştir.

İşlev çevirisi

Daha önce bahsettiğimiz fonksiyon çevirme, grafiğin koordinat sistemini yatay olarak hareket ettirmek için kullanılır.

Çağrı formatı:

çevir(a, b)

İlk parametre, bir piksel için x ekseninin pozitif yönüne hareket anlamına gelir. İkinci parametre, b piksel için y ekseninin pozitif yönüne hareket anlamına gelir.

İki kodu karşılaştırın ve herhangi bir fark bulmaya çalışın. (Kodu basitleştirmek için fonksiyon boyutunu silebiliriz, ekran genişliği ve yüksekliği varsayılan olarak 100'dür.)

Kullanmadan önce:

elips(0, 0, 20, 20);

Kullandıktan sonra:

çevir(50, 50);

elips(0, 0, 20, 20);

İşlev döndürme

Çağrı formatı:

döndürmek(a)

Koordinat sistemini döndürmek için kullanılır. Parametre pozitif olduğunda, orijinal noktayı merkez olarak seçecek ve saat yönünde dönecektir. Parametre girişi, radyan kullanmak için trigonometrik fonksiyonla aynıdır.

Kullanmadan önce:

elips(50, 50, 20, 20);

Kullanım sonrası:

döndür(radyan(30));

elips(50, 50, 20, 20);

Programdaki etki, dairenin koordinat merkez noktası etrafında 30 derece saat yönünde dönmesini sağlamaktır.

fonksiyon ölçeği

Çağrı formatı:

ölçek(a)

Bu fonksiyon koordinat sistemini uzaklaştırabilir. Değer ölçeklendirme içindir. Parametre 1'in üzerindeyse, yakınlaştırın; 1'den küçükse, uzaklaştırın.

Kullanmadan önce:

elips(0, 0, 20, 20);

Kullanım sonrası:

ölçek(4);

elips(0, 0, 20, 20);

Yukarıdaki resimdeki daire orijinal boyutunun dört katı büyütülür. Ayrıca, x aks ve y aks yönlerini ayrı ayrı uzaklaştırmak için iki parametre kullanabilirsiniz.

ölçek(4, 2);

elips(0, 0, 20, 20);

Dönüşüm Fonksiyonunun Süperpozisyonu

Burada süperpozisyon, mevcut koordinat sistemine göre değişikliklerle ilgilidir. Başka bir deyişle, etkiler üst üste bindirilebilir.

çevir(40, 10);

çevir(10, 40);

elips(0, 0, 20, 20);

Nihai etkisi şuna eşit olacaktır:

çevir(50, 50);

elips(0, 0, 20, 20);

Döndürme işleviyle aynı

döndür(radyan(10));

döndür(radyan(20));

elips(50, 50, 20, 20);

Eşittir

döndür(radyan(30));

elips(50, 50, 20, 20);

Her ikisi de ölçeklemek ve döndürmek için orijinal noktada ölçekleme ve döndürme merkezi işlevi görür. (50, 50) 'de merkezi bir konumla döndürme efektini elde etmek istiyorsak, bunun tersini düşünmeliyiz. İlk olarak orijinal noktayı (50, 50) konumuna getirin, ardından dönen dönüşüm fonksiyonunu ekleyin. Son olarak, grafiğinizi orijinal noktada boyayın.

Kullanmadan önce:

elips(50, 50, 50, 20);

Kullanım sonrası:

çevir(50, 50);

döndür(radyan(45));

elips(0, 0, 50, 20); //Döndürme açısı değişimini görebilmek için oval yaptık.

Dönüyor gibi görünebilir. Sadece daha fazla pratik yapmalısın, o zaman anlayacaksın. (Ayrıca, farkı görmek için çevirme ve döndürme işlevinin sırasını değiştirmeyi deneyebilirsiniz.)

Yatay Hareket ve Dairesel Hareket

Aşağıdaki durumlarda, koordinat sistemini değiştirerek hareket etkisini gerçekleştireceğiz. Aynı zamanda bir önceki bölüm örneğine bakmanızı rica ediyorum. Çoğu zaman, belirli bir etkiyi gerçekleştirmek için tamamen farklı bir yöntem kullanabileceğinizi göreceksiniz.

Adım 5: Yatay Hareket

[cceN_cpp theme="şafak"]

int x, y; void setup(){ size(300, 300); x = 0; y = yükseklik/2; } geçersiz çizim(){ arka plan(234, 113, 107); noStroke(); çevir(x,y); elips(0, 0, 50, 50); x++; } [/cceN_cpp]

Daire koordinatı değişmez, ancak koordinat sistemi değiştirilir.

Döndür Hareketi

[cceN_cpp theme="şafak"] kayan nokta r, R, açı; void setup(){ size(300, 300); r = 20; //Daire boyutu R = 100; //Hareket izinin yarıçapı } void draw(){ background(234, 113, 107); çevir(genişlik/2, yükseklik/2); //Orijinal noktayı ekran merkezine taşı. döndür(açı); noStroke(); elips(0, R, r, r); açı += 0.05; } [/cceN_cpp]

Trigonometrik fonksiyondan çok daha açık ve basit değil mi? Burada bir sorunuz olabilir. Örnek olarak dönen kodu alın. Açıkçası, yukarıda belirtilen dönüşüm fonksiyonu görecelidir ve üst üste bindirmeye izin verir. Eğer fonksiyon çizimine translate(genişlik/2, yükseklik/2) yazarsak, bu fonksiyon çiziminin her defasında bir kere çalıştığı anlamına gelmez mi, koordinat sistemi bir mesafe hareket edecektir. orijinal tabandan sağ alt yönde mi? Sonsuza kadar ekranın ortasında kalmayacak.

Bu şekilde anlayabilirsiniz. Fonksiyon çizimindeki kod yukarıdan aşağıya bir işlemi tamamladıktan sonra, ikinci işlemde koordinat sistemi başlangıç durumuna dönecektir. Koordinat sisteminin orijinal noktası varsayılan olarak sol üst köşeye dönecek şekilde ayarlanacaktır. Yani koordinat sisteminin sürekli değişmesini istiyorsak, fonksiyon döndürme içindeki açı parametreleri sürekli değerini artıracaktır.

Koordinat Durumuna Erişim

Bazen koordinat sistemi durumunun değişmesini eskisine göre istemiyoruz. Şu anda pushMatrix ve popMatrix fonksiyonlarını kullanmalıyız. İki işlev genellikle çift olarak görünür. pushMatrix işlevi popMatrix'ten önce gelir. Tek başına kullanılamazlar, aksi takdirde yanlış gidecektir.

Örnek:

[cceN_cpp theme="şafak"] pushMatrix(); //Koordinat sistem durumunu kaydet çevir(50, 50); elips(0, 0, 20, 20); popMatrix(); //Koordinat sistemi durumunu oku rect(0, 0, 20, 20); [/cceN_cpp]

Bu örnekte, translate(50, 50) işlevini kullanmadan önce, koordinat sisteminin mevcut durumunu saklamak için pushMatrix. fonksiyonunu kullanıyoruz. Bu aynı zamanda başlangıç durumudur. Bir daire çizdikten sonra popMatrix'i uyguladıktan sonra bu duruma geri dönecektir. Şu anda, rect işlevini uygulayın, function translate etkisinden etkilenmediğini göreceksiniz, bunun yerine orijinal noktanın sol üst köşesine bir kare çiziyor.

Ayrıca pushMatrix ve popMatrix işlevi yuvalamaya izin verir.

Örneğin

pushMatrix();

pushMatrix();

popMatrix();

popMatrix();

İlişkisini sezgisel olarak göstermek için yoğun formatı seçiyoruz.

Birleşik Hareket mi, Hareket Halinde Hareket mi?

Şimdi önemli kısmın ikinci dalgası başlıyor. Sadece ileriye doğru itmeye çalışın. Daha önce tekne ve insan metaforunu kullandık. Hem insanları hem de tekneyi hareket ettirirsek, sahildeki insanlar nasıl bir duyguya sahip olacak hiç düşündünüz mü?

Koordinat sisteminin dönen hareketi ile yatay hareketi birleştirmek gibi. Buradaki nokta aslında sadece bir yönde hareket etmektir.

[cceN_cpp theme="şafak"] int x, y; şamandıra açısı; void setup(){ size(300, 300); arka plan(234, 113, 107); noStroke(); x = 0; //x'in başlangıç değeri 0 olduğunda, bu kod cümlesini ihmal edebiliriz. Değişken bildirirken varsayılan değer 0'dır. y = 0; //Yukarıdakiyle aynı. açı = 0; //Yukarıdakiyle aynı. } void draw(){ açı += 0.25; y--; çevir(genişlik/2, yükseklik/2); pushMatrix(); döndür(açı); elips(x, y, 5, 5); popMatrix(); } [/cceN_cpp]

Ve dairesel hareket ve koordinat sistemi ölçeklendirme var.

[cceN_cpp theme="şafak"] kayan nokta x, y, açı; void setup(){ size(300, 300); arka plan(234, 113, 107); noStroke(); } void draw(){ açı += 0.01; x = günah(açı) * 100; y = cos(açı) * 100; çevir(genişlik / 2, yükseklik / 2); pushMatrix(); ölçek(1 + 0.1 * günah(açı*10)); elips(x, y, 5, 5); popMatrix(); } [/cceN_cpp]

Buna aldanmayın! Daire noktası aslında dairesel hareket yapıyor. Bunu bir video kamera ile ölçeklemeye benzetsek anlamak zor değil. Sürekli olarak öne veya arkaya hareket eden bir video kamera, dairesel hareketle bir noktayı çekiyor.

Şaşırmış? Bunlar basit temel işlevlerdir. Ancak farklı kombinasyonlarla çok farklı efektler yaratabiliriz. Şimdiye kadar, keşfiniz için biraz yer açmak için maruz kalmam durdu.

6. Adım: Kapsamlı Kullanım

Bu bölüm için yakında sona eriyor. Son iki bölümde, grafik hareketin temel yöntemini tanıttım. İlk fikirlerinizle karşılaştırıldığında, bunun için daha derin bir anlayışa sahip olabileceğinize inanıyorum. En azından, referansınız için tamamlanmış bir örnek.

[cceN_cpp theme="şafak"] kayan nokta x1, y1, x2, y2, r, R; yüzer açı1, açı2; void setup(){ size(300, 300); r = 12; R = 120; açı1 = 0; açı2 = PI/4; } void draw(){ arka plan(234, 113, 107); noStroke(); çevir(genişlik / 2, yükseklik / 2); açı1 += 0.02; açı2 += 0.06; x1 = R *sin(açı1); y1 = R* cos(açı1); x2 = R/2 *sin(açı2); y2 = R/2 *cos(açı2); elips(x1, y1, r/2, r/2); elips(x2, y2, r, r); elips(-x1, -y1, r/2, r/2); elips(-x2, -y2, r, r); elips(x1, -y1, r/2, r/2); elips(x2, -y2, r, r); elips(-x1, y1, r/2, r/2); elips(-x2, y2, r, r); vuruş(255); vuruş Ağırlığı(3); satır(x1, y1, x2, y2); satır(-x1, -y1, -x2, -y2); satır(x1, -y1, x2, -y2); satır(-x1,y1, -x2,y2); } [/cceN_cpp]

Bu örnek, daha önce tanıttığımız bölümün ötesinde herhangi bir bilgi içermemektedir.

Hangi puanlar için eşleşiyor? Hangi satırlar eşleşir? Ben de çözemiyorum. Ama bunun küçük bir kod bölümünden kaynaklandığını hatırlıyorum.

Bu onun hareketinin doğasıdır. Geri kalan çizgiler sadece ayna etkisidir. Bu kılavuzu takip etmeye devam ederseniz, güncellenmiş bir sürüm oluşturabilir ve grafik hareket durumunuzu gerçek zamanlı olarak değiştirmek için grafiğinize bir denetleyici ekleyebilirsiniz.

Programlamanın ilginç noktası, düzenlemeleri tasarlayabilmeniz veya birleştirebilmenizdir. Ancak, nihai programın ne olacağı tamamen sizin yeteneğinize bağlıdır. Genellikle tasarımcıların güçlü grafik hayal gücü vardır. Kafanızda bir resim çizebilir ve ardından onu koda çevirmeyi deneyebilirsiniz. Ayrıca, istediğiniz zaman kodun ve düzenlemelerin kendisinden, tasarım fonksiyonlarından ve değişkenlerden başlayabilirsiniz. İşlemenin sizin çiziminiz ve kodun da fırçalarınız olduğunu unutmayın! Sadece fikirlerinizi özgürce püskürtün!

7. Adım: SON

Bölümümüzün sonunda, başından beri uzun süredir sakladığımız bir soruya dönelim. Programla resim yapmak için bu kadar uğraşmanın ne anlamı var? Bu bölümü öğrendikten sonra, keşfetmenizi bekleyen çok fazla oyun yöntemi olduğunu göreceksiniz.

[cceN_cpp theme="şafak"] float browsX, earD, eyeD, faceD; void setup(){ size(500, 500); } void draw(){ arka plan(200, 0, 0); kaşX = 150 + günah(frameCount / 30.0) *20; kulakD = 180 + günah(frameCount / 10.0) *20; eyeD = 60 + günah(frameCount/30.0) *50; yüzD = 300; vuruş Ağırlığı(8); elips(175, 220, kulakD, kulakD); elips(genişlik - 175, 220, kulakD, kulakD); rect(100, 100, faceD, faceD); satır(kaşX, 160, 220, 240); line(genişlik-kaşX, 160, genişlik-220, 240); doldur(rastgele(255), rastgele(255), rastgele(255)); elips(175, 220, gözD, gözD); elips(genişlik-175, 220, gözD, gözD); doldur(255); nokta(genişlik/2, yükseklik/2); üçgen(170 - cos(frameCount / 10.0)* 20, 300 - sin(frameCount / 10.0) *20, genişlik - (170 + cos(frameCount / 10.0) *20), 300 + sin(frameCount / 10.0) * 20, 250, 350); } [/cceN_cpp]

Dinamik grafikler için sihir değil mi? Burada size çok fazla vaka göstermiyorum. Benden çok daha iyi bir efekt tasarlayabilirsin. Programla çizim yapmanın avantajı, her pikselle oynayabilmenizdir. Grafiğiniz bitmap olmadığı için grafiğinizdeki her önemli nokta kontrol edilebilir. Diğer yazılımların fark edemediği bazı etkileri gerçekleştirebilir.

Her şeyi kırmak ve tekrar birleştirmek isteyen bir kalbiniz varsa, çalışma programı bu fikri gerçekleştirmenize çok yardımcı olacaktır.

Bu makale tasarımcı Wenzy'den geliyor.

Adım 8: Göreli Okumalar:

Tasarımcı için İlginç Programlama Rehberi -- İlk Dokunuşu İşleme

Tasarımcılar için İlginç Programlama Rehberi--İlk İşleme Programınızı Oluşturun

Tasarımcılar için İlginç Programlama Rehberi – Resminizi Çalıştırın(Birinci Bölüm)

Herhangi bir sorunuz varsa, [email protected] adresine e-posta gönderebilirsiniz.

Bu makale şu adresten alınmıştır: