본문 바로가기
svg

svg paper.js getPointAt(): onFrame event

by peach1227 2024. 2. 27.
<!doctype html>
<html>
<head>
<style>
canvas,svg {width:900px;
height:900px;}

</style>

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.js"></script>
<script type="text/paperscript" canvas="myCanvas">
//a star to move and the path to move along.

var center = new Point(50, 50);
var points = 5;
var radius1 = 80;
var radius2 = 200;
var star = new Path.Star(center, points, radius1, radius2);
star.fillColor = 'white';
star.strokeColor = 'red';
star.applyMatrix=false;
//var path= new Path.Circle({center:view.center,radius:250,strokeColor:"black"});
var path= new Path.Ellipse({point:view.center-[200,200],size: new Size(400,200),strokeColor:"black"});
function onFrame(event){
var slowness=400;
var time=event.count % slowness /slowness;
updateRect(time);}

function updateRect(time){
var point=path.getPointAt(time*path.length);
var tangent=path.getTangentAt(time*path.length);
//console.log("tangent",tangent);
star.position=point;
star.rotation=tangent.angle;
star.scaling=Math.abs(tangent.angle)/90;
star.strokeWidth=Math.abs(tangent.angle)/2;
updateSvg();
}
function updateSvg(){
var svg1=document.querySelector("#svg1");
svg1.innerHTML="";
var svg=project.activeLayer.exportSVG();
svg1.appendChild(svg);
}
</script>
</head>
<body>

<canvas id="myCanvas"></canvas>
<svg id="svg1"></svg>
</body>

</html>
반응형

'svg' 카테고리의 다른 글

svg paper.js clipped: group  (3) 2024.02.28
svg raster;  (0) 2024.02.27
svg paper.js ellipse:move event and trace  (0) 2024.02.25
svg paper.js sine curve: onDoubleClick event;  (0) 2024.02.23
svg path parser:  (0) 2024.02.21