gpt4 book ai didi

javascript - 尝试旋转和变换 SVG 路径 - 我需要三 Angular 函数计算吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:05:54 24 4
gpt4 key购买 nike

我正在尝试使用代表电子电阻器符号的鼠标 SVG 路径进行操作。这个符号需要用“引线”的末端进行操作(如果你能想象出真正的电阻器的话);因此,我试图实现拖动第一个点周围(第二个点仍然存在)和路径的所有点,以便在新坐标上拖动第一个点时按比例表现。

尝试分组,尝试使用三 Angular 函数...所以代码如下:

   `<g id="r" >    <!-- R - group for symbol of electronics resistor -->
<path d="M 200 20 v80 h30 v150 h-60 v-150 h30 m 0 150 v80 "
fill="none" stroke="blue" stroke-width="5" />
<circle cx="200" cy="20" r="10"
fill="blue" />
<circle cx="200" cy="330" r="10"
fill="blue"/>
</g>`

请帮忙。

最佳答案

我想我大致做了你想要的:http://dl.dropbox.com/u/169269/resistor.svg

单击并拖动电阻器以将其缩放并旋转到该鼠标位置。在此版本中,线条粗细和圆圈也会缩放,但避免这种情况应该不会太难。

它确实需要三 Angular 函数和变换。关键部分是拖动功能,我在以下位置进行了更详细的解释:http://www.petercollingridge.co.uk/interactive-svg-components/draggable-svg-element

function drag(evt)
{
if(selected_element != 0)
{
var resistor_x = 200;
var resistor_y = 100;
var mouse_x = evt.pageX;
var mouse_y = evt.pageY;

dx = resistor_x - mouse_x;
dy = resistor_y - mouse_y;

d = Math.sqrt(dx*dx + dy*dy); // Find distance to mouse
theta = 90+Math.atan2(dy, dx)*180/Math.PI; //Find angle to mouse in degrees

transform = "translate(200, 100) rotate(" + theta + ") scale(" + d/310 + ")" ;
selected_element.setAttributeNS(null, "transform", transform);
}
}

请注意,此代码假定电阻器长 310 像素并围绕 (200, 100) 旋转。缩放和旋转变换以 (0,0) 为中心,因此您应该绘制静态点为 (0,0) 的电阻器,然后将其平移到您想要的位置。

关于javascript - 尝试旋转和变换 SVG 路径 - 我需要三 Angular 函数计算吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com