射法投射のソース



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script type="text/javascript">
    var TimeId,x=4,y=4,vx,vy,c=0,r,e;
    function stop(){
       clearTimeout(TimeId);
    }
    function move(){
       TimeId=setTimeout("move()",100);
       var dx,dy,obj,a,v;
       a=document.getElementById("kakudo").value;
       v=document.getElementById("hayasa").value;
       e=document.getElementById("hanpatsu").value;
       if (c==0) {
          r=a*Math.PI/180;
          vx=v*Math.cos(r);
          vy=v*Math.sin(r);
          c=1;
       }
       vy=vy-4.9;
       x=x+vx;
       y=y+vy;
       obj=document.getElementById("ball");
       obj.style.left=20+x;
       obj.style.top=50+400-10-y;
       hansha(x,y);
       if (x+10+20>=document.body.clientWidth) {
          vx=-e*vx;
          x=document.body.clientWidth-30;
          obj.style.left=20+x;
       }
       if (x<=-20) {
          vx=-e*vx;
          x=-20;
          obj.style.left=20+x;
       }
       if (50+400-y>=document.body.clientHeight) {
          vy=-e*vy;
          y=440-document.body.clientHeight+10;
          obj.style.top=50+400-10-y;
       }
       if (y>50+400-10) {
          vy=-e*vy;
          y=440;
          obj.style.top=50+400-10-y;
       }
    }
    function set(){
       var obj;
       x=4;
       y=4;
       c=0;
       obj=document.getElementById("ball");
       obj.style.left=20+4;
       obj.style.top=50+400-10-4;
    }
    function hansha(x1,y1){
       var x0,y0,ga,gc,tatekyori,yokokyori,kabekyori,tateFrag=false,yokoFrag=false,kabeFrag=false,obj;
       x0=x1-vx;
       y0=y1-vy;
       ga=(y1-y0)/(x1-x0);
       gc=y1-(y1-y0)/(x1-x0)*x1;
       tatekyori=Math.sqrt(Math.pow(x0,2)+Math.pow((gc-y0),2));
       yokokyori=Math.sqrt(Math.pow(((-gc/ga)-x0),2)+Math.pow(y0,2));
       kabekyori=Math.sqrt(Math.pow((x0-790),2)+Math.pow(((790*ga+gc)-y0),2));
       if (gc>=0 && gc<=390) {
          if (x0<-10 && x1>=-10 || x0>=4 && x1<4) {
             tateFrag=true;
          }
       }
       if (-gc/ga>=0 && -gc/ga<=790) {
          if (y0<-10 && y1>=-10 || y0>=4 && y1<4) {
             yokoFrag=true;
          }
       }
       if (790*ga+gc>=0 && 790*ga+gc<=258) {
          if (x0<786 && x1>=786 || x0>=800 && x1<800) {
             kabeFrag=true;
          }
       }
       if (tateFrag) {
          if (yokoFrag && tatekyori>yokokyori) {
          }
          else if (kabeFrag && tatekyori>kabekyori) {
          }
          else {
             if (x0<-10 && x1>=-10) {
                x=-10;
                y=ga*x+gc;
                vx=-e*vx;
             }
             else if (x0>=4 && x1<4) {
                x=4;
                y=ga*x+gc;
                vx=-e*vx;
             }
          }
       }
       if (yokoFrag) {
          if (tateFrag && yokokyori>tatekyori) {
          }
          else if (kabeFrag && yokokyori>kabekyori) {
          }
          else {
             if (y0<-10 && y1>=-10) {
                y=-10;
                x=(y-gc)/ga;
                vy=-e*vy;
             }
             else if (y0>=4 && y1<4) {
                y=4;
                x=(y-gc)/ga;
                vy=-e*vy;
             }
          }
       }
       if (kabeFrag) {
          if (tateFrag && kabekyori>tatekyori) {
          }
          else if (yokoFrag && kabekyori>yokokyori) {
          }
          else {
             if (x0<786 && x1>=786) {
                x=786;
                y=ga*x+gc;
                vx=-e*vx;
             }
             else if (x0>=800 && x1<800) {
                x=800;
                y=ga*x+gc;
                vx=-e*vx;
             }
          }
       }
       obj=document.getElementById("ball");
       obj.style.left=20+x;
       obj.style.top=50+400-10-y;
    }
</script>
</head>
<body>
<form>
角度:<input id="kakudo" type="text" size="4">°
速さ:<input id="hayasa" type="text" size="4">
反発係数:<input id="hanpatsu" type="text" size="4" value="0.99">
<input type="button" value="Start" onClick="move()">
<input type="button" value="Stop" onClick="stop()">
<input type="button" value="Reset" onClick="set()">
</form>
<img src="image/axis3.png" style="position:absolute;left:20;top:50">
<script type="text/javascript">
    document.write("<img id='ball' src='image/ball.png' style='position:absolute;top:436;left:24'>");
</script>
</body>
</html>