Şimdi Ara

Javascript basit bir yerçekimi-su olayı.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
1
Cevap
0
Favori
274
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 1-2 gündür p5.js ile uğraşmaktayım,tamamen meraktan böyle bir şey yapmak istedim,fizik motorlarını anlamak isteyen arkadaşlara bir ufuk açabilir belki,siz de kendi 2d basit fizik motorcuğunuzu yazabilirsiniz.
    Kodu biraz acele yazdım,sorun gördüğünüz yerleri düzeltirsiniz.

    Bu kodu deneyebilmeniz için p5.js ile çalışmanız gerekmektedir.
    sketch.js içinde bu kodlar olmalı.

    var ellip = [];
    var a = 0;
    var sayac = 0;
    var gravity = 1;
    var force = 0;

    var coord;

    function setup() {
    createCanvas(600,450);
    }

    function draw() {
    background(255);

    for(a = 150;a<=500;a+=20){

    ellip[sayac] = new ellips(a,0,50,50);
    sayac++;
    }
    fill("blue");
    noStroke();
    myWater = new water(0,300,600,180,0.01);
    myWater.display();
    fill("red");
    ellip[0].display();
    coord = ellip[0].y;
    ellip[0].move();
    forc();

    }

    var ellips = function(x,y,w,h) {
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
    this.gravity = gravity;

    this.move = function(){
    this.y += gravity-force;
    }
    this.display = function(){
    ellipse(this.x,this.y,this.w,this.h);
    }
    };
    var water = function(x,y,w,h,gsivi){
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
    this.gsivi = gsivi;

    this.display = function(){
    rect(x,y,w,h);
    }
    }

    function forc(){
    if(ellip[0].y>=myWater.y){ // inside water
    if((ellip[0].y-coord)>0){ // if getting speed
    force += myWater.gsivi*gravity;
    gravity -= 0.001;
    }else{ // if not getting
    force += myWater.gsivi*gravity;
    gravity += 0.001;
    }

    }
    if(ellip[0].y<=myWater.y){ // outside water
    if((ellip[0].y-coord)>0){ // asagi gidiyorsa

    gravity += 0.001;
    if(force>0){
    gravity +=0.02;
    }

    }else{ // yukarı gidiyorsa
    gravity += 0.04;
    }
    }
    if(Math.abs(force-gravity)<=0.0001){
    force = 0;
    gravity = 0;
    }
    }


    index.html içinde bunlar
    <html>
    <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>
    <script src="sketch.js"></script>
    </head>
    <body>
    </body>
    </html>

    Javascript basit bir yerçekimi-su olayı.

    Gerçek hayattaki suya düşme olayını tam fonksiyonları ile uygulayamadım,ancak düzgün çalışıyor.
    Bu kodlar ile bir cismin suya düşüşünü ve suyun onu kaldırmasını simule etmekteyiz.
    ÖNEMLİ NOT : Dikkat ederseniz ki for döngüsünde soldan sağa doğru birdan fazla top oluşturuyor,ilk fikrim birden fazla topu suya atmaktı,ancak kolaylık olsun diye tek bir topta denedim ve birden çok topa uygulamayı unutmuşum,ilerleyen vakitlerde güncelleyeceğim.



    < Bu mesaj bu kişi tarafından değiştirildi oksygen -- 19 Nisan 2018; 4:35:13 >







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.