Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何围绕一个焦点旋转d3.js节点?

如何围绕一个焦点旋转d3.js节点?
EN

Stack Overflow用户
提问于 2016-02-26 11:54:52
回答 1查看 283关注 0票数 0

我一直使用力布局作为一种身体的引擎,我正在制作的棋盘游戏,它一直工作得很好。然而,我一直在试图找出是否有可能围绕一个特定的焦点旋转节点。考虑一下这个码页。我想使代码页中的3个绿色节点以统一的方式围绕焦点旋转。在抽签()函数中,我执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var k = .1 * e.alpha;

// Push nodes toward their designated focus.
nodes.forEach(function(o, i) {
  o.y += (foci[o.id].y - o.y) * k;
  o.x += (foci[o.id].x - o.x) * k;
});

就像我把节点推到一个焦点上一样,我想让指定给一个焦点的所有节点都围绕着这个焦点旋转。有任何方法可以通过操纵o.y ()函数中的o.x变量来实现这一点吗?我试着用这个公式手动设置x和y值,但是我认为力布局的电荷和重力可能把它搞砸了。有什么想法吗?

我知道我正在使用的部队布局,这是不太打算做的事情,但任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-27 05:05:26

我把你的代码搞得乱七八糟,以便在一个点上有一个基本的动作。

我将foci var更改为一个仅为两点的对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 foci = {
    x: 300,
    y: 100
  };

我在数据中添加了必须为每个节点提供一个起点的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nodes.push({
  id: 0,
  x:20,
  y:30
});
nodes.push({
  id: 0,
  x:40,
  y:60
});
nodes.push({
  id: 0,
  x:80,
  y:10
});

我为每个节点添加了一个角度,以便您以后可以独立地使用这些:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 .attr("cx", function(d) {
            d.angle = 0; //added
      return d.x;
    })

并改变了滴答,使每个节点围绕焦点移动。如前所述,我增加了一个角度,因为这些点将围绕不同大小半径的不同圆圈移动,因为它们与焦点点的距离不同。如果使用一个角度,那么所有节点都会在彼此的顶部移动,这是没有意义的:

圆上点的公式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//c = centre point, r = radius, a = angle
x = cx + r * cos(a)
y = cy + r * sin(a)

用这个勾起:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var radius = 100; //made up radius

  node
    .attr("cx", function(d) {
       if(d.angle>(2*Math.PI)){ restart at full circle
         d.angle=0;
       }
    d.x = foci.x + radius *Math.cos(d.angle) //move x

      return d.x;
    })
    .attr("cy", function(d) {
    d.y = foci.y + radius *Math.sin(d.angle) //move y
      return d.y;
    });

更新小提琴:https://jsfiddle.net/reko91/yg0rs4xc/7/

这应该是很简单的实现,从圆圈运动到椭圆:)

再看一遍,这只会在一半左右移动。这是由于滴答功能只持续了几秒钟。如果您单击其中一个节点,它将在圆周继续运行。如果您希望这种情况持续发生,您必须设置一个计时器函数,以便它不间断地绕着圆圈运行,但这应该很容易实现。

而不是刻度函数,只需在里面使用计时器进行另一个函数,在加载时调用它,它就会连续运行:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35660550

复制
相关文章
[Cocos Creator] 围绕物体旋转
在游戏开发过程中,可能会有让一个物体围绕另一个物体旋转的需求,就比如月球围绕着地球旋转,同时地球也在围绕着太阳旋转。
陈皮皮
2020/07/10
3.8K0
[Cocos Creator] 围绕物体旋转
jq实现图像旋转木马:轮焦点+关于控制+自己主动旋转木马
打包下载:http://download.csdn.net/detail/u011043843/7994017
全栈程序员站长
2022/07/05
3.7K0
2021-03-27:给你一个链表的头节点 head ,旋转链表
2021-03-27:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。输入:head = 1→2→3→4→5, k = 2,输出:4→5→1→2→3。
福大大架构师每日一题
2021/03/27
3330
2021-03-27:给你一个链表的头节点 head ,旋转链表
如何围绕MLSQL构建数据中台
MLSQL 目前开源的部分包括三个组件: Console, 也就是Web控制台 Cluster, 方便管理和代理后端多个MLSQL Engine实例 Engine, 相当于MLSQL的JVM(脚本解释
用户2936994
2022/04/02
4370
如何配置一个无线旋转的外部轴
大家都知道马达是可以没有任何限位进行无限制的旋转的,那么机器人是否可以配置这样的外部轴呢?具体怎么操作呢?
用户4442670
2022/06/29
7460
如何配置一个无线旋转的外部轴
R语言ggtree按照指定的节点旋转树
http://yulab-smu.top/treedata-book/index.html
用户7010445
2021/01/20
1.8K0
R语言ggtree按照指定的节点旋转树
获得焦点与失去焦点事件
获得焦点事件(onfocus)是当某个元素获得焦点时触发事件处理程序。
全栈程序员站长
2022/09/07
6K0
如何扩展一个自定义SOP节点
平安夜祝大家平平安安,以后的文章关于C++语言方面的内容会多一些,不太理解的话就当一乐子看,了解一下Houdini底层架构知识也是好的。能保证的是文章的内容都是笔者自己验证过的,只要足够用心,文章内容是可以起到一些授人以渔的作用。 我们平时解决问题特别是使用API来写代码的时候,掌握两条规则可能会轻松一点,一条是不能一口吃一个胖子,遇到复杂的问题尽可能先简单化,想登天得造台阶不是,只要目标方向是对的,时间总能解决问题。第二条是既然用别人的API接口,就没必要钻牛角尖把每一点都弄的很明白,即使把头发熬白了,也
企鹅号小编
2018/01/26
1.9K0
win10 uwp 获得焦点改变 如何判断应用是否获得焦点
本文讲的是当我们应用失去焦点时,我们获得事件,当我们应用获得焦点,同样获得事件。同时,在应用不可以见时,我们也可以获得。
林德熙
2018/09/18
2K0
win10 uwp 获得焦点改变
            如何判断应用是否获得焦点
自己写的一个JQUERY焦点图
以前写了一个JQUERY焦点图插件。但是过于冗长,其逻辑非常费解。今天心血来潮,决定重新写一下。暂时还没有封装成插件。回头抽时间封装成插件。
FungLeo
2022/11/28
1.4K0
什么是旋转矩阵?如何使用旋转矩阵
我们有时候可以在网上看到关于彩票市场的旋转矩阵,但却并不了解旋转矩阵究竟是什么,它听上去似乎是有一些学术化的,在下面我们将为大家介绍关于旋转矩阵的知识。
用户8739990
2021/07/12
3.6K0
什么是旋转矩阵?如何使用旋转矩阵
焦点事件
焦点详解:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候就可以接收用户的输入 1.点击 2.tab 3.js
河湾欢儿
2018/09/06
3.2K0
被围绕的区域
给定一个二维的矩阵,包含X和O。 找到所有被X围绕的区域,并将这些区域里所有的O用X填充。 被围绕的区间不会存在于边界上,换句话说,任何边界上的O都不会被填充为X。任何不在边界上,或不与边界上的O相连的O最终都会被填充为X。如果两个元素在水平或垂直方向相邻,则称它们是相连的。
WindRunnerMax
2020/08/27
4870
WPF 程序如何移动焦点到其他控件
WPF 中可以使用 UIElement.Focus() 将焦点设置到某个特定的控件,也可以使用 TraversalRequest 仅仅移动焦点。本文介绍如何在 WPF 程序中控制控件的焦点。
walterlv
2023/10/22
5510
WPF Window 窗口获得焦点和失去焦点事件
Window 窗口获得焦点和失去焦点事件(窗口变为背景窗口、窗口切换等都引起窗口焦点失去) Activated获得焦点事件 和 Deactivated失去焦点的事件: Activated: 获得焦点 (首次打开软件时;由别的软件切换回当前软件时;点击当前软件在任务栏的按钮时) Deactivated:失去焦点,与Activated正好相反,(Deactivated = de + activated) 使用方法有两种: 第一种是在XAML中声明,然后在后台书写执行代码:
全栈程序员站长
2022/09/12
4.7K0
失去焦点和获得焦点发生事件(js)
{ alert(‘请确认您输入格式是否正确!‘); }
全栈程序员站长
2022/09/07
9K0
D3.js库-5-做一个简单的图形
SVG,指可缩放矢量图形(Scalable Vector Graphics),是用于描述二维矢量图形的一种图形格式,是由万维网联盟制定的开放标准。 SVG 使用 XML 格式来定义图形。SVG的几个特点
皮大大
2021/03/01
6.9K0
D3.js库-5-做一个简单的图形
当你按下方向键,电视是如何寻找下一个焦点的
我工作的第一家公司主要做的是一个在智能电视上面运行的APP,其实就是一个安卓APP,也是混合开发的应用,里面很多页面是H5开发的。
街角小林
2023/03/01
5800
当你按下方向键,电视是如何寻找下一个焦点的
从围绕API到围绕数据-使用流式编程构建更简洁的架构
在服务暴露出越来越多的API后,相似的操作会越来越多。此时会进行抽象和封装,提取公共操作,例如提取函数、建立工厂等。
超级大猪
2022/11/29
8660
从围绕API到围绕数据-使用流式编程构建更简洁的架构
jquery 绑定事件 - blur() 失去焦点 - focus() 获取焦点
可以看到当获取焦点的时候,就立即弹出alert()。 其实通过focus()函数只是简单用来初始化文本框的焦点输入的而已,如下:
Devops海洋的渔夫
2019/05/30
12.4K0

相似问题

SceneKit:围绕节点自身旋转

311

仅围绕一个轴旋转节点

11

如何在d3.js中围绕中心旋转对象

24

如何围绕javafx旋转一组节点

112

如何围绕节点的Y轴旋转SKSpriteNode?

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文