Download utils.js from RustX/Autonomous_Driving_Simulation: direct link, hf CLI and curl.
- Browser
- Download file 1.12 kB
-
https://huggingface.co/spaces/RustX/Autonomous_Driving_Simulation/resolve/main/utils.js
- Command line
-
hf download hf://spaces/RustX/Autonomous_Driving_Simulation/utils.js
-
curl -L -o utils.js https://huggingface.co/spaces/RustX/Autonomous_Driving_Simulation/resolve/main/utils.js
1.12 kB
| function lerp(a,b,t){ | |
| return a+(b-a)*t; | |
| } | |
| function getIntersection(A,B,C,D){ | |
| const tTop=(D.x-C.x)*(A.y-C.y)-(D.y-C.y)*(A.x-C.x); | |
| const uTop=(C.y-A.y)*(A.x-B.x)-(C.x-A.x)*(A.y-B.y); | |
| const bottom=(D.y-C.y)*(B.x-A.x)-(D.x-C.x)*(B.y-A.y); | |
| if(bottom!=0){ | |
| const t=tTop/bottom; | |
| const u=uTop/bottom; | |
| if(t>=0 && t<=1 && u>=0 && u<=1){ | |
| return { | |
| x:lerp(A.x,B.x,t), | |
| y:lerp(A.y,B.y,t), | |
| offset:t | |
| } | |
| } | |
| } | |
| return null; | |
| } | |
| //polylines | |
| function polysIntersect(poly1, poly2){ | |
| for(let i=0;i<poly1.length-1;i++){ | |
| for(let j=0;j<poly2.length-1;j++){ | |
| const touch=getIntersection( | |
| poly1[i], | |
| poly1[i+1], | |
| poly2[j], | |
| poly2[j+1] | |
| ); | |
| if(touch){ | |
| return true; | |
| } | |
| } | |
| } | |
| return false; | |
| } | |
| function getRGBA(value){ | |
| const alpha=Math.abs(value); | |
| const R=value<0?0:255; | |
| const G=R; | |
| const B=value>0?0:255; | |
| return "rgba("+R+","+G+","+B+","+alpha+")"; | |
| } |