最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

css实现任意大小、方向和角度的箭头代码

来源:懂视网 责编:小OO 时间:2020-11-27 18:49:13
文档

css实现任意大小、方向和角度的箭头代码

所以平移矩阵。旋转矩阵;v(x.y) 点绕原点旋转θ到v';(x';.y';)。则有。x = r * cos(? )。y = r * sin(? )。x';= r * cos(θ + ?) = r * cos(θ) * cos(?) - r * sin(θ) * sin(? ) // 余弦公式。y';= r * sin(θ + ?) = r * sin(θ) * cos(?) + r * cos(θ) * sin(? ) // 正弦公式。所以。x';= x * cos(θ) - y * sin(θ)。y';= x * sin(θ) + y * cos(θ)。所以旋转矩阵。伸缩矩阵;假设x轴,y轴的伸缩率分别是kx,ky。则有。
推荐度:
导读所以平移矩阵。旋转矩阵;v(x.y) 点绕原点旋转θ到v';(x';.y';)。则有。x = r * cos(? )。y = r * sin(? )。x';= r * cos(θ + ?) = r * cos(θ) * cos(?) - r * sin(θ) * sin(? ) // 余弦公式。y';= r * sin(θ + ?) = r * sin(θ) * cos(?) + r * cos(θ) * sin(? ) // 正弦公式。所以。x';= x * cos(θ) - y * sin(θ)。y';= x * sin(θ) + y * cos(θ)。所以旋转矩阵。伸缩矩阵;假设x轴,y轴的伸缩率分别是kx,ky。则有。

所以平移矩阵:

旋转矩阵

v(x, y) 点绕原点旋转θ到v'(x', y')

则有:

x = r * cos(? )
y = r * sin(? )

x' = r * cos(θ + ?) = r * cos(θ) * cos(?) - r * sin(θ) * sin(? ) // 余弦公式
y' = r * sin(θ + ?) = r * sin(θ) * cos(?) + r * cos(θ) * sin(? ) // 正弦公式

所以:

x' = x * cos(θ) - y * sin(θ)
y' = x * sin(θ) + y * cos(θ)

所以旋转矩阵:

伸缩矩阵

假设x轴,y轴的伸缩率分别是kx, ky。 则有:

x' = x * kx
y' = y * ky

所以:

复合变换

如果是对p(x, y)先平移(变换矩阵A), 然后旋转(变换矩阵B), 然后伸缩(变换矩阵C)呢?

p' =C(B(Ap)) ==> p' = (CBA)p //矩阵乘法结合率

现在任意角度o的箭头就很简单了:

先把p旋转45度 成为 菱形, 变换为 M1 伸缩x轴, y轴 :

x' = size * cos(o/2) = x * √2 * cos(o/2)
y' = size * sin(o/2) = y * √2 * sin(o/2)

即: kx = √2 * cos(o/2); ky = √2 * sin(o/2) 这样就得到了任意角度的箭头。 变换为 M2

如果箭头的方向不是指向右侧, 在进行一次旋转就可以得到任意方向的箭头。变换为 M3

那么由于 p' =C(B(Ap)) ==> p' = (CBA)p , 我们就可以先计算出 M3 M2 M1,然后对p进行相应的变换,就可以得到任意角度, 任意方向的箭头了。

p的width和height就是箭头的边长, 通过调整可以获取任意边长的箭头。

React组件

为了方便使用, 这个箭头被封装为了一个 React组件。

示例

简单箭头

模拟select

发散箭头

props

nametypedefaultdescription
degreenumber90箭头的张角, 角度制
offsetDegreenumber0箭头的方向,默认指向右边
colorstring-箭头的颜色
sizestring10px箭头边长

安装使用

npm install rc-arrow --save

文档

css实现任意大小、方向和角度的箭头代码

所以平移矩阵。旋转矩阵;v(x.y) 点绕原点旋转θ到v';(x';.y';)。则有。x = r * cos(? )。y = r * sin(? )。x';= r * cos(θ + ?) = r * cos(θ) * cos(?) - r * sin(θ) * sin(? ) // 余弦公式。y';= r * sin(θ + ?) = r * sin(θ) * cos(?) + r * cos(θ) * sin(? ) // 正弦公式。所以。x';= x * cos(θ) - y * sin(θ)。y';= x * sin(θ) + y * cos(θ)。所以旋转矩阵。伸缩矩阵;假设x轴,y轴的伸缩率分别是kx,ky。则有。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top