You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1 lines
9.2 KiB

let TOP=1,RIGHT=2,BOTTOM=3,LEFT=4,TOP_RIGHT=5,BOTTOM_RIGHT=6,BOTTOM_LEFT=7,TOP_LEFT=8;function collisionDetection(a,e){let j=strokePadding;if(null==j&&(j=0),a.isEllipse&&e.isRectangle){let k=a,l=e;for(let n=0;n<TWO_PI;n+=PI/32){let u=k.x,w=k.y,z=k.x+sin(n)*k.r,A=k.y-cos(n)*k.r,B=l.width+2*j,C=l.height+2*j,D=l.x-j,E=l.y-j;if(z>D&&z<D+B&&A>E&&A<E+C){if(u>D&&u<D+B){if(0<k.v.y)return{isTouching:!0,location:TOP};if(0>k.v.y)return{isTouching:!0,location:BOTTOM}}if(w>E&&w<E+C){if(0<k.v.x)return{isTouching:!0,location:LEFT};if(0>k.v.x)return{isTouching:!0,location:RIGHT}}if(0<n&&n<=PI/2)return{isTouching:!0,location:BOTTOM_LEFT};if(n>PI/2&&n<=PI)return{isTouching:!0,location:TOP_LEFT};if(n>PI&&n<=PI+PI/2)return{isTouching:!0,location:TOP_RIGHT};if(n>PI+PI/2&&n<=TWO_PI)return{isTouching:!0,location:BOTTOM_RIGHT}}}}if(a.isEllipse&&e.isEllipse){let k=a,l=e;if(k.x+k.r>l.x-l.r&&k.x-k.r<l.x+l.r&&k.y+k.r>l.y-l.r&&k.y-k.r<l.y+l.r){let n=sqrt(pow(k.x-l.x,2)+pow(k.y-l.y,2));if(n<k.r+l.r)return{isTouching:!0}}}return{isTouching:!1,location:0}}function performCollision(a,e,j){if(a.isEllipse){let k=a;if(e.isFrameborder){switch(j.location){case BOTTOM:k.v.y*=-1;break;case LEFT:case RIGHT:k.v.x*=-1;}testMode&&j.location==TOP&&(k.v.y*=-1),k.move()}if(e.isBrick){let l,n;switch(j.location){case TOP:case BOTTOM:return k.v.y*=-1,void k.move();case LEFT:case RIGHT:return k.v.x*=-1,void k.move();case TOP_LEFT:l=e.x,n=e.y;break;case TOP_RIGHT:l=e.x+e.width,n=e.y;break;case BOTTOM_LEFT:l=e.x,n=e.y+e.height;break;case BOTTOM_RIGHT:l=e.x+e.width,n=e.y+e.height;}let u=k.x-l,w=k.y-n,z=sqrt(u*u+w*w);u/=z,w/=z;let A=k.v.x*u+k.v.y*w;k.v.x-=2*A*u,k.v.y-=2*A*w,k.move()}if(e.isPaddle){let l,n;switch(j.location){case TOP:case TOP_LEFT:case TOP_RIGHT:return k.v.x=k.calcVelocityX(e,k.v.x),k.v.y=-k.calcVelocityY(),void k.move();case LEFT:case RIGHT:return k.v.x*=-1,void k.move();case BOTTOM_LEFT:l=e.x,n=e.y+e.height;break;case BOTTOM_RIGHT:l=e.x+e.width,n=e.y+e.height;}let u=k.x-l,w=k.y-n,z=sqrt(u*u+w*w);u/=z,w/=z;let A=k.v.x*u+k.v.y*w;k.v.x-=2*A*u,k.v.y-=2*A*w,k.move()}if(e.isEllipse){let l=a,n=e;l.mass=l.r,n.mass=n.r;let u=atan2(n.y-l.y,n.x-l.x),w=atan2(l.v.y,l.v.x),z=atan2(n.v.y,n.v.x),A=l.v.mag*cos(w-u),B=l.v.mag*sin(w-u),C=n.v.mag*cos(z-u),D=n.v.mag*sin(z-u),E=((l.mass-n.mass)*A+2*n.mass*C)/(l.mass+n.mass),F=B,G=(2*l.mass*A+(n.mass-l.mass)*C)/(l.mass+n.mass),H=D,I=cos(u),J=sin(u);l.v.x=I*E-J*F,l.v.y=J*E+I*F,n.v.x=I*G-J*H,n.v.y=J*G+I*H,l.v.mag=sqrt(pow(l.v.x,2)+pow(l.v.y,2)),n.v.mag=sqrt(pow(n.v.x,2)+pow(n.v.y,2)),l.x+=l.v.x,l.y+=l.v.y,n.x+=n.v.x,n.y+=n.v.y}}}function toTimeString(a,e){a=floor(a/10);let j=floor(a%100)+"",k=floor(a/100%60)+"";if(e){let l=floor(a/100/60%60)+"",n=floor(a/100/60/60)+"";2>j.length&&(j="0"+j),2>k.length&&(k="0"+k),2>l.length&&(l="0"+l),2>n.length&&(n="0"+n)}else{let l=floor(a/100/60%60)+"";2>j.length&&(j="0"+j),2>k.length&&(k="0"+k),2>l.length&&(l="0"+l)}return timeString}function setCookie(a,e,j){let k="";if(j){let l=new Date;l.setTime(l.getTime()+1e3*(60*(60*(24*(365*j))))),k="; expires="+l.toUTCString()}document.cookie=a+"="+e+k+"; path=/"}function getCookie(a){let e=a+"=",j=document.cookie.split(";");for(let l,k=0;k<j.length;k++){for(l=j[k];" "==l.charAt(0);)l=l.substring(1,l.length);if(0==l.indexOf(e))return l.substring(e.length,l.length)}return null}function deleteCookies(){for(let a=0;a<arguments.length;a++)setCookie(arguments[a],"",-1)}function deleteAllCookies(){let a=document.cookie.split(";");for(let e=0;e<a.length;e++)deleteCookies(a[e].split("=")[0])}Array.prototype.shuffle=function(){for(let e,j,a=this.length;0!=a;)j=floor(random()*a),a-=1,e=this[a],this[a]=this[j],this[j]=e},Array.prototype.clone=function(){return this.slice(0)},Array.prototype.partitiate=function(a){if(0==a)return this;let e=[];for(;this.length;)e.push(this.splice(0,round(pow(this.length,1/(1+1/a)))).partitiate(a-1));return e},String.prototype.isValidHEX=function(){return /(^#[0-9A-Fa-f]{6}$)|(^#[0-9A-Fa-f]{3}$)/i.test(this)};function debugInformation(){let a=viewPort.x,e=viewPort.y;textSize(12),textStyle(NORMAL),stroke(255),strokeWeight(1),fill(255),text("FPS : "+round(frameRate()),10+a,10+textAscent("FPS : ")+e),text("MouseX : "+round(mouseX+a),10+a,10+textAscent("FPS : ")+10+textAscent("MouseX : ")+e),text("MouseY : "+round(-mouseY-e),10+a,10+textAscent("FPS : ")+10+textAscent("MouseX : ")+10+textAscent("MouseY : ")+e)}function ColorPicker(){this.movingObject="",this.updateFromGraphical=function(){this.h=360*(1-$("#hue_picker").position().top/$("#hue").height()),this.s=100*(($("#sb_picker").position().left+8)/$("#saturation").width()),this.v=100*(1-($("#sb_picker").position().top+8)/$("#value").height()),this.r=HSVtoRGB(this.h,this.s,this.v).r,this.g=HSVtoRGB(this.h,this.s,this.v).g,this.b=HSVtoRGB(this.h,this.s,this.v).b,this.hex=RGBtoHEX(this.r,this.g,this.b),this.updateInterface()},this.updateFromHSV=function(){this.h=$($("#color_picker_hsv input")[0]).val(),this.s=$($("#color_picker_hsv input")[1]).val(),this.v=$($("#color_picker_hsv input")[2]).val(),this.r=HSVtoRGB(this.h,this.s,this.v).r,this.g=HSVtoRGB(this.h,this.s,this.v).g,this.b=HSVtoRGB(this.h,this.s,this.v).b,this.hex=RGBtoHEX(this.r,this.g,this.b),this.updateFromHEX(null,!0),this.updateInterface()},this.updateFromRGB=function(){this.r=$($("#color_picker_rgb input")[0]).val(),this.g=$($("#color_picker_rgb input")[1]).val(),this.b=$($("#color_picker_rgb input")[2]).val(),this.h=RGBtoHSV(this.r,this.g,this.b).h,this.s=RGBtoHSV(this.r,this.g,this.b).s,this.v=RGBtoHSV(this.r,this.g,this.b).v,this.hex=RGBtoHEX(this.r,this.g,this.b),this.updateFromHEX(null,!0),this.updateInterface()},this.updateFromHEX=function(e,j){if(!j)if($(e).val().isValidHEX())this.hex=$(e).val();else return void alert("Error!");this.r=HEXtoRGB(this.hex).r,this.g=HEXtoRGB(this.hex).g,this.b=HEXtoRGB(this.hex).b,this.h=RGBtoHSV(this.r,this.g,this.b).h,this.s=RGBtoHSV(this.r,this.g,this.b).s,this.v=RGBtoHSV(this.r,this.g,this.b).v,this.updateInterface()},this.updateInterface=function(){let z,e=$($("#color_picker_rgb input")[0]),j=$($("#color_picker_rgb input")[1]),k=$($("#color_picker_rgb input")[2]),l=$($("#color_picker_hsv input")[0]),n=$($("#color_picker_hsv input")[1]),u=$($("#color_picker_hsv input")[2]),w=$("#color_picker_hex");e.val(round(this.r)),j.val(round(this.g)),k.val(round(this.b)),l.val(round(this.h)),n.val(round(this.s)),u.val(round(this.v)),z=color(this.r,0,0),e.css({"background-color":z.toString(),color:fontColor(z)}),z=color(0,this.g,0),j.css({"background-color":z.toString(),color:fontColor(z)}),z=color(0,0,this.b),k.css({"background-color":z.toString(),color:fontColor(z)}),colorMode(HSL),z=color(this.h,100,50),l.css({"background-color":z.toString(),color:fontColor(z)}),z=color(this.h,this.s,100-this.s/2),n.css({"background-color":z.toString(),color:fontColor(z)}),z=color(this.h,100,this.v/2),u.css({"background-color":z.toString(),color:fontColor(z)}),colorMode(RGB),w.val(this.hex),w.css({"background-color":this.hex,color:fontColor(color(this.hex))});let A=HSVtoRGB(this.h,100,100),B="linear-gradient(to right, #FFF 0%, rgb("+A.r+","+A.g+","+A.b+") 100%)";$("#hue_picker").css("top",(1-this.h/360)*$("#hue").height()),$("#sb_picker").css({left:this.s/100*$("#saturation").width()-8,top:(1-this.v/100)*$("#value").height()-8}),$("#saturation").css("background",B)},this.mousePressed=function(){let e=winMouseX-$("#saturation").offset().left,j=winMouseY-$("#value").offset().top;0<e&&e<$("#saturation").width()&&0<j&&j<$("#value").height()&&(this.movingObject="sb"),e>$("#saturation").width()+6&&e<$("#saturation").width()+6+$("#hue").width()&&0<j&&j<$("#hue").height()&&(this.movingObject="hue"),this.mouseDragged()},this.mouseDragged=function(){if("hue"==this.movingObject){let e=$("#hue"),j=$("#hue_picker"),k=winMouseY-e.offset().top;0<k&&k<e.height()?j.css("top",k-1):k>e.height()?j.css("top",e.height()-1):0>k&&j.css("top",-1)}if("sb"==this.movingObject){let e=$("#saturation"),j=$("#value"),k=$("#sb_picker"),l=winMouseX-e.offset().left,n=winMouseY-j.offset().top;0<l&&l<e.width()?k.css("left",l-8):0>l?k.css("left",-8):l<e.width()&&k.css("left",e.width()-8),0<n&&n<j.height()?k.css("top",n-8):0>n?k.css("top",-8):n>j.height()&&k.css("top",j.height()-8)}this.updateFromGraphical()},this.mouseReleased=function(){this.movingObject=""},this.getColor=function(){return this.hex}}function fontColor(a){let e=Math.round((299*red(a)+587*green(a)+114*blue(a))/1e3);return 125<e?"#000":"#CCC"}function RGBtoHEX(a,e,j){return"#"+(16777216+(j|e<<8|a<<16)).toString(16).slice(1)}function HEXtoRGB(a){let e=/^#?([a-fA-F\d])([a-fA-F\d])([a-fA-F\d])$/i;a=a.replace(e,function(k,l,n,u){return l+l+n+n+u+u});let j=/^#?([a-fA-F\d]{2})([a-fA-F\d]{2})([a-fA-F\d]{2})$/i.exec(a);return j?{r:parseInt(j[1],16),g:parseInt(j[2],16),b:parseInt(j[3],16)}:null}function HSVtoRGB(a,e,j){let k,l,n,u,w,z,A,B;switch(1===arguments.length&&(e=a.s,j=a.v,a=a.h),a/=360,e/=100,j/=100,u=Math.floor(6*a),w=6*a-u,z=j*(1-e),A=j*(1-w*e),B=j*(1-(1-w)*e),u%6){case 0:k=j,l=B,n=z;break;case 1:k=A,l=j,n=z;break;case 2:k=z,l=j,n=B;break;case 3:k=z,l=A,n=j;break;case 4:k=B,l=z,n=j;break;case 5:k=j,l=z,n=A;}return{r:255*k,g:255*l,b:255*n}}function RGBtoHSV(a,e,j){1===arguments.length&&(e=a.g,j=a.b,a=a.r);let u,k=Math.max(a,e,j),l=Math.min(a,e,j),n=k-l,w=0===k?0:n/k;return k===l?u=0:k===a?(u=e-j+n*(e<j?6:0),u/=6*n):k===e?(u=j-a+2*n,u/=6*n):k===j?(u=a-e+4*n,u/=6*n):void 0,{h:360*u,s:100*w,v:100*(k/255)}}