kazushi?
//---------------------------------------------------------------------------- // C main line //---------------------------------------------------------------------------- #include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules #include <math.h> #define W 16 //ROW in virtual #define H 16 //COL in virtual #define L 8 //array length of dots #define N 1 //number of dots void update(); void raiseWave(int, int); void ripple(); char array1[W*H]; char array2[W*H]; char *data; char *a1, *a2, *at; float dot[L*N]; //x,y,vx,vy,g void main() { //initialize for(int i=0; i<W*H; i++) { array1[i] = 0; array2[i] = 0; } a1 = array1; a2 = array2; data = a1; for(int d = 0; d < N; d++) { float v = (float)d; dot[d*L] = 8.0+v; dot[d*L+1] = 8.0; dot[d*L+2] = 0.0; dot[d*L+3] = 0.0; float vv = 0.8-(v*0.1); if(vv < 0.0) vv = 0.0; dot[d*L+4] = vv; dot[d*L+5] = 0.0; dot[d*L+6] = 0.0; dot[d*L+7] = 0.0; } // ALL LED OFF PRT0DR = 0xFF; PWM8_1_EnableInt(); PWM8_1_Start(); PWM8_2_Start(); PWM8_3_Start(); PWM8_4_Start(); PWM8_5_Start(); PWM8_6_Start(); PWM8_7_Start(); PWM8_8_Start(); PWM8_9_Start(); PWM8_10_Start(); PWM8_11_Start(); PWM8_12_Start(); PWM8_13_Start(); PWM8_14_Start(); PWM8_15_Start(); PWM8_16_Start(); PGA_1_Start(3); // Start AMP PGA_2_Start(3); // Start AMP //PGA_3_Start(3); // Start AMP SAR6_1_Start(3); // Start ADC SAR6_2_Start(3); // Start ADC //SAR6_3_Start(3); // Start ADC M8C_EnableGInt; // main while(1) { update(); //update dots ripple(); //wide a wave //exchange array at = a1; a1 = a2; a2 = at; data = a1; } } float px = 0.0; float py = 0.0; float tx = 0.0; float ty = 0.0; float u = 0.99; void update() { //get input value tx = SAR6_1_cGetSample()/4.0*-1.0; //-32 ~ +32 to 8 ~ -8 ty = SAR6_2_cGetSample()/4.0*-1.0; float cx = tx-px; float cy = ty-py; for(int d = 0; d < N; d++) { float vx = dot[d*L+2]; float vy = dot[d*L+3]; float g = dot[d*L+4]; vx += cx; vy += cy; vx = (vx*u)+(tx/2.0); vy = (vy*u)+(ty/2.0); dot[d*L] += vx; dot[d*L+1] += vy; if(dot[d*L] > 14.0) {dot[d*L] = 14.0; vx *= -g;} if(dot[d*L] < 1.0) {dot[d*L] = 1.0; vx *= -g;} if(dot[d*L+1] > 14.0) {dot[d*L+1] = 14.0; vy *= -g;} if(dot[d*L+1] < 1.0) {dot[d*L+1] = 1.0; vy *= -g;} dot[d*L+2] = vx; dot[d*L+3] = vy; char x = (char)round(dot[d*L]); char y = (char)round(dot[d*L+1]); raiseWave(x, y); } px = tx; py = ty; } void raiseWave(int x, int y) { //set area which can make waves if(x < 1 || x > 14 || y < 1 || y > 14) { return; } int c = x+(y<<4); a1[c] += 16; a1[c-1] += 4; a1[c+1] += 4; a1[c-W] += 4; a1[c+W] += 4; } void ripple() { int i = 0; for(int y=0; y<H; y++) { for(int x=0; x<W; x++) { int sum = 0.0; if(x > 0) {sum += a1[i-1];} if(x < W-1){sum += a1[i+1];} if(y > 0) {sum += a1[i-W];} if(y < H-1){sum += a1[i+W];} sum = sum << 4; // simulate float .0000 //wave equation int v = (sum >> 1) - (a2[i]<<4); //dissolve a wave v -= (v>>5); v = v >> 4; // back to int //cut out of brightness and set brightness to LED if(v > 31) v = 31; if(v < 0) v = 0; a2[i] = (char)v; i++; } } } int col = 0; int w = 0; #pragma interrupt_handler PWM8_1_INT void PWM8_1_INT() { if(w < -1){ w++; return; } w = 0; if(col >= 16){ col = 0; } // ALL OFF PRT0DR = 0b00010000; // port0_4 = High -> G1 // ON int a = col<<4; PWM8_1_WritePulseWidth(data[a]); PWM8_2_WritePulseWidth(data[a+1]); PWM8_3_WritePulseWidth(data[a+2]); PWM8_4_WritePulseWidth(data[a+3]); PWM8_5_WritePulseWidth(data[a+4]); PWM8_6_WritePulseWidth(data[a+5]); PWM8_7_WritePulseWidth(data[a+6]); PWM8_8_WritePulseWidth(data[a+7]); PWM8_9_WritePulseWidth(data[a+8]); PWM8_10_WritePulseWidth(data[a+9]); PWM8_11_WritePulseWidth(data[a+10]); PWM8_12_WritePulseWidth(data[a+11]); PWM8_13_WritePulseWidth(data[a+12]); PWM8_14_WritePulseWidth(data[a+13]); PWM8_15_WritePulseWidth(data[a+14]); PWM8_16_WritePulseWidth(data[a+15]); PRT0DR = col; col++; }
kazushi?
VC1 = 10
VC3 Source = VC1
VC3 Divider = 75
VC1=10
VC2=2
VC3 Source VC2
VC3 Divider 240
akita?
kazushi?
int ad = (sx + x) * (sy + dy) * 16;
int ad = (sx + x) + (sy + y) * 16;
//---------------------------------------------------------------------------- // C main line //---------------------------------------------------------------------------- #include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules #include <math.h> #define W 16 //ROW #define H 16 //COL void raiseWave(int, int); void ripple(); char array1[W*H]; char array2[W*H]; char* data; char *a1, *a2, *at; void main() { //initialize for(int i=0; i<W*H; i++) { array1[i] = 0; array2[i] = 0; } a1 = array1; a2 = array2; data = a1; // ALL LED OFF PRT0DR = 0xFF; PWM8_1_EnableInt(); PWM8_1_Start(); PWM8_2_Start(); PWM8_3_Start(); PWM8_4_Start(); PWM8_5_Start(); PWM8_6_Start(); PWM8_7_Start(); PWM8_8_Start(); PWM8_9_Start(); PWM8_10_Start(); PWM8_11_Start(); PWM8_12_Start(); PWM8_13_Start(); PWM8_14_Start(); PWM8_15_Start(); PWM8_16_Start(); PGA_1_Start(3); // Start AMP PGA_2_Start(3); // Start AMP PGA_3_Start(3); // Start AMP SAR6_1_Start(3); // Start ADC SAR6_2_Start(3); // Start ADC SAR6_3_Start(3); // Start ADC M8C_EnableGInt; // main raiseWave(8, 8); //invoke a wave from center int wait_count = 10; int w = 0; while(1) { //get input value //char v1 = (SAR6_1_cGetSample()+32)/2; //-32 ~ +32 to 0 ~ 32 //char v2 = (SAR6_2_cGetSample()+32)/2; //char v3 = (SAR6_3_cGetSample()+32)/2; //for(int i = 0; i < N; i++) //{ // data[i] = v1; //} if(w > wait_count){ w = 0; } ripple(); //wide a wave w++; } } void raiseWave(int x, int y) { //set area which can make waves if(x < 3 || x > 13 || y < 3 || y > 13) { return; } int c = x+y*W; a1[c] += 16; a1[c-1] += 8; a1[c+1] += 8; a1[c-W] += 8; a1[c+W] += 8; } void ripple() { for(int i=0; i<W*H; i++) { int x = i % W; int y = i / W; char sum = 0; if(x > 0) {sum += a1[i-1];} if(x < W-1){sum += a1[i+1];} if(y > 0) {sum += a1[i-W];} if(y < H-1){sum += a1[i+W];} //wave equation char v = (sum >> 1) - a2[i]; //dissolve a wave v -= (v >> 3); //cut out of brightness and set brightness to LED a2[i] = v&0x1f; // 0~31 } //exchange array at = a1; a1 = a2; a2 = at; data = a1; } int col = 0; #pragma interrupt_handler PWM8_1_INT void PWM8_1_INT() { if(col >= 16){ col = 0; } // ALL OFF PRT0DR = 0b00010000; // port0_4 = High -> G1 // ON int a = col*W; PWM8_1_WritePulseWidth(data[a+15]); PWM8_2_WritePulseWidth(data[a+14]); PWM8_3_WritePulseWidth(data[a+13]); PWM8_4_WritePulseWidth(data[a+12]); PWM8_5_WritePulseWidth(data[a+11]); PWM8_6_WritePulseWidth(data[a+10]); PWM8_7_WritePulseWidth(data[a+9]); PWM8_8_WritePulseWidth(data[a+8]); PWM8_9_WritePulseWidth(data[a+7]); PWM8_10_WritePulseWidth(data[a+6]); PWM8_11_WritePulseWidth(data[a+5]); PWM8_12_WritePulseWidth(data[a+4]); PWM8_13_WritePulseWidth(data[a+3]); PWM8_14_WritePulseWidth(data[a+2]); PWM8_15_WritePulseWidth(data[a+1]); PWM8_16_WritePulseWidth(data[a]); PRT0DR = col; col++; }
/*==================================== 桦ץ ====================================*/ #include <stdio.h> #include <math.h> #define N 256 //LEDο /*==================================== ȴؿ ====================================*/ void wait(unsinged long n) { while(n--){} //ˤʤޤǥ롼 } /*==================================== ؿ ====================================*/ void raiseWave(int x, int y, short *array1) { int i; short array[N]; for(i=0; i<N; i++) { array[i] = array1[i]; } //ϰϤ if(x < 3 || x > 13 || y < 3 || y > 13) { return; } int sx, sy; //Ⱦ£礭 for(sx=-4; sx<4; sx++) { for(sy=-4; sy<4; sy++) { double r = sx * sx + sy * sy; int ad = (sx + x) * (sy + dy) * 16; if(r < 16) { array[ad] += (cos(sqrt(r) / 4 * pi) + 1) / 2; } } } } /*==================================== ưؿ ====================================*/ void ripple(short *array1, short *array2) { int i, j; short led[N]; for(i=16; i<N-16; i++) { int x = i % 16; //üη if(x == 0 || x == 15) { continue; } //ư array2[i] = ((array1[i-1] + array1[i+1] + array1[i-16] + array1[i+16]) >> 1) - array2[i]; //ξ array2[i] -= (array2[i] >> 5); //ͤLED뤵Ѵ double a = array2[i] + 10; //LED뤵θ٤ if(a > 15) { a = 15; } else if(a < 0) { a = 0; } //LED뤵Ϳ led[i] = a; } //ξ short array0[N]; for(j=0; j<N; j++) { array0[j] = array1[j]; array1[j] = array2[j]; array2[j] = array0[j]; } } /*==================================== ᥤؿ ====================================*/ int main(void) { int i; short array1[N]; short array2[N]; //ν for(i=0; i<N; i++) { array1[i] = array2[i] = 0; } while(1) { wait(30000); //30000Ԥ raiseWave(8, 8, array1); // ripple(array1, array2); // } return 0; }
- muraki?
http://ccnet.dip.jp/devassist/exam/algorithm/wave/index.html
MovieClip?
URL:http://www.instructables.com/id/Laser-show-for-poor-man/
http://casualplay.net/blog/2005/12/_draw.html http://www.newgrounds.com/portal/view/306531 http://casualplay.net/blog/2005/11/_blendmode_1.html
masaki?
masaki?
masaki?
URL:http://1art.jp/flash9/index.html
masaki?
masaki?
FLASH MATH CREATIVITY
http://www.levitated.net/bones/flashmath/photos.html
masaki?
masaki?
masaki?
masaki?
http://kazushi-lab.c.fun.ac.jp/pukiwiki/index.php?2%20PHOTO%20FLASH
masaki?
masaki?
masaki?
2 PHOTO FLASH
http://kazushi-lab.c.fun.ac.jp/pukiwiki/index.php?%B2%DD%C2%EA%A1%A72%A4%C4%A4%CE%BC%CC%BF%BF
masaki?
masaki?
URL: http://www.nintendo.co.jp/wii/rmcj/handle/index.html
URL:http://youtube.com/watch?v=RQphfVeZB5E&feature=related
masaki?
masaki?
http://volcanic-penguin.deviantart.com/art/LineTo-experimental-14080073 http://mysketch.jp/blog/2008/05/as202.php
masaki?
http://gascon.cocolog-nifty.com/blog/2007/07/flash8_0372.html http://wellflat.raindrop.jp/main/flash/flash_html/mandelbrot.html YouTube? http://www.youtube.com/watch?v=MaozI6rCRHo
masaki?
http://www.fractalartcontests.com/2007/ http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%AB http://gigazine.net/index.php?/news/comments/20060603_complexification/ http://gigazine.net/index.php?/news/comments/20060618_fractal_recursions/ http://www.javac.jp/flash/fractal/index.html
masaki?
masaki?
masaki?
http://www001.upp.so-net.ne.jp/seri-cf/ http://www.ne.jp/asahi/h/machida/ http://gigazine.net/index.php?/news/comments/20061203_amazing_flame_fractals/