[参数化设计] [GhPy][C#][Processing]弹球。。。(精神分裂版)

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
先来个processing版吧
弹球01.gif
下面是代码
  1. int centerX;
  2. int centerY;
  3. int state = 0;
  4. PVector v1;
  5. PVector v2;

  6. void setup(){
  7. size(800,800);
  8. centerX = width/2;
  9. centerY = height/2;


  10. }

  11. void draw(){
  12. background(255);
  13. rectMode(CENTER);
  14. rect(centerX,centerY,500,500);
  15. if(state == 0){
  16. line(centerX,centerY,mouseX,mouseY);
  17. v1 = new PVector(mouseX-centerX,mouseY-centerY);
  18. v1.setMag(5);
  19. v2 = new PVector(centerX,centerX);
  20. }else{
  21. reflect();
  22. v2.add(v1);
  23. ellipse(v2.x,v2.y,50,50);
  24. }
  25. }

  26. void mouseClicked(){
  27. if(state == 0){
  28. state = 1;
  29. }else{
  30. state = 0;
  31. }
  32. }

  33. void reflect(){
  34. if(v2.x>=650||v2.x<=150){
  35. v1.set(v1.x*-1,v1.y);
  36. }
  37. if(v2.y>=650||v2.y<=150){
  38. v1.set(v1.x,v1.y*-1);
  39. }
  40. }
复制代码
接下来是Pyhon版
弹球02.gif
代码如下(Python代码传不上来,只能截图了)
QQ截图20140902005754.jpg
接下来是C#版
弹球03.gif
  1. private void RunScript(bool reset, object y, ref object rect, ref object pt1)
  2. {
  3. //Runner run;
  4. //Point3d pt;

  5. Rectangle3d rect1 = new Rectangle3d(Plane.WorldXY, rectX, rectY);
  6. if(reset){
  7. Random r = new Random();
  8. Vector3d p = new Vector3d(r.Next(1, rectX - 1), r.Next(1, rectY - 1), 0);
  9. Vector3d v = new Vector3d(r.Next(1, 20), r.Next(1, 20), 0);
  10. run = new Runner(p, v);
  11. }else{
  12. pt1 = run.position(); //点的当前位置
  13. Print("{0}", rectX);
  14. run.run();

  15. }
  16. rect = rect1;
  17. }

  18. // <Custom additional code>

  19. int rectX = 500;
  20. int rectY = 500;
  21. Runner run;


  22. public class Runner{
  23. Vector3d p;
  24. Vector3d v;
  25. public Runner(Vector3d p, Vector3d v){
  26. this.p = p;
  27. this.v = v;
  28. }
  29. public Point3d position(){
  30. Point3d pt = new Point3d(this.p.X, this.p.Y, 0);
  31. return pt;
  32. }

  33. void reflect(){
  34. if(this.p.X >= 500 || this.p.X <= 0){
  35. this.v.X *= -1;
  36. }
  37. if(this.p.Y >= 500 || this.p.Y <= 0){
  38. this.v.Y *= -1;
  39. }
  40. }

  41. public void run(){
  42. this.reflect();
  43. this.p = Vector3d.Add(this.p, this.v);
  44. }
  45. }
复制代码
额。。还没完,精神分裂还在继续,下面这个是用Python深入下去的。。。模拟蜂群。。先去吃个药。
xx.gif


评分

参与人数 1米粒 +10 收起 理由
月之眼 + 10 厉害啊,三个版本

查看全部评分

 楼主| 发表于 2014-9-2 01:11:21 | 显示全部楼层
自己的沙发自己坐
发表于 2014-9-2 12:09:49 | 显示全部楼层
你们总是不让人抢沙发 太过分了!
发表于 2014-9-2 13:32:17 | 显示全部楼层
呵呵……不让抢沙发。
发表于 2014-10-17 21:33:57 | 显示全部楼层
楼主太牛了吧,这么多语言混着来,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回顶部