Openframeworks Ders 6 (Dizi Kullanımı)

talhakoc 28 Ağustos 2015Openframeworks

Diziler programlamanın vazgeçilmezlerindendir. Genel olarak for ve while döngüleriyle kullanılarak kullanıcılara büyük kolaylık sağlar. 500 tane yuvarlak şeklin rastgele bir yerlere koyulduğunu ve bununla görsel hazırlandığını düşünün. Bu şekiller rastgele ufak hareketler yapsın. Bunları tanımlamak için sayfalar dolusu kod yazılması gerekirdi. Şimdi bu uygulamayı diziler ve for döngüsü kullanarak yazalım.

#include “ofApp.h”
#define sayi 500

float cemberx[sayi];
float cembery[sayi];
float yaricap[sayi];
int kirm[sayi];
int yesil[sayi];
int mavi[sayi];

//————————————————————–
void ofApp::setup(){
ofSetFrameRate(24);

for(int i=0; i<sayi; i++)
{
cemberx[i] = ofRandom(0, ofGetWidth());
cembery[i] = ofRandom(0, ofGetHeight());
yaricap[i] = ofRandom(10, 40);

kirm[i] = ofRandom(0, 255);
yesil[i] = ofRandom(0, 255);
mavi[i] = ofRandom(0, 255);
}
}

//————————————————————–
void ofApp::update(){
for(int i=0; i<sayi; i++)
{
cemberx[i] += ofRandom(-1,1);
cembery[i] += ofRandom(-1,1);
}
}

//————————————————————–
void ofApp::draw(){
for(int i=0; i<sayi; i++)
{
ofSetColor(kirm[i], yesil[i], mavi[i]);
ofCircle(cemberx[i], cembery[i], yaricap[i]);
}
}

define bir sabit tanımlamaya yarayan koddur. Değişken yanındaki sayı olur ve hiçbir şekilde değişmeyecektir. define komutunun altında diziler tanımlanmıştır. 500 tane daire oluşturulacağına göre bunların herbirinin x ve y eksen değerleri ve yarıçap değerleri olacaktır. Bu değerleri tutması için 500 birimlik diziler oluşturulmuştur. Ve bu değerler float tipinde tanımlanmıştır. Herbirinin rastgele farklı renklerde olması istenildiği için kırmızı, mavi ve yeşil tonlarından da 500 birimlik diziler oluşturulmuştur. Herbir indisli renkler bir şeklin renk değerini oluşturacaktır.

setup() fonksiyonunun içerisinde frameRate “24” olarak tanımlanmıştır. Çünkü 500 şeklin güncellenmesi bir iş yükü oluşturabilir. Üstelik hareketin de hızı 24 frame için normaldir. Bir kereye mahsus bu şekillerin lokasyon, renk ve yarıçap değerleri verilmesi için setup fonksiyonunda for döngüsü içerisinde bu tanımlamalar yapılmıştır. cemberx[i] = ofRandom(0, ofGetWidth()); bu kod parçacığındaki ofGetWidth() fonksiyonu işlemin yapılacağı pencerenin genişlik pikselini gösterir. Yani x ekseninde “0” ile genişliği arasında rastgele bir noktada konumlanır. cembery[i] = ofRandom(0, ofGetHeight()); bu kodda ise ofGetHeight() fonksiyonu çalışılan pencerenin yüksekliğini göstermektedir. Burada da “0” ile yüksekliği arasında rastgele bir değer atanmaktadır. ofRandom fonksiyonu aldığı iki parametre arasında rastgele bir değer atama işlemini yapmaktadır. Yarıçap için de 10 ile 40 arasında bir değer atanmıştır. Yani pencerenin rastgele bir yerinde rastgele büyüklükte bir şekil çizilmiştir. Renk pikselleri sekiz bitlik olduğu için “0” ile “255” arasında rastgele değerler atanmıştır. Her indis bir şekli göstermektedir ve bu şekilde rastgele yerde rastgele büyüklükte rastgele renkte “500” adet şekil oluşturulmuştur.

draw() fonksiyonunda for döngüsü ile herbir indis için bu şekiller çizdirilmiştir. update() fonksiyonunda ise herbir şekil for döngüsü ile rastgele “1” piksel yukarı, aşağı, sağa, sola gitmesi ya da sabit kalması sağlanmıştır. Oluşacak olan çıktıda rastgele yerlerde rastgele renklerdeki 500 dairenin titreme hareketi yapması beklenecektir.

ofdizi

2 thoughts on “Openframeworks Ders 6 (Dizi Kullanımı)

  1. Benim bir sorum var OpenCV gibi OpenFw de androidte kullanılabilirmi? bide kodu VS’de hazırlayıp emülatörle o kodu androide aktarabilirmiyiz? Değişik gelebilir ancak merak ediyorum, Çünkü VS’de çok kolay yazabiliyorum ancak farklı bir platform için kullanılan kütüphane gerçekten zorluyor:(

  2. Merhabalar, evet kullanılabilir. java android sdk için indirme linkine openframeworksün sitesinden ulaşabilirsiniz. ikinci sorunuz hakkında maalesef ki bilgim yok.

okan için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Arama

Twitterda

© 2014 - Talha Koç. All Rights Reserved. Powered by Wordpress and Design by We Create Web Designs