首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在jung上设置顶点随机移动的动画

,可以通过以下步骤实现:

  1. 首先,确保你已经安装了jung库,并在你的项目中引入了相关的依赖。
  2. 创建一个图对象,可以是有向图或无向图,根据你的需求选择适当的图类型。
  3. 添加顶点到图中,并为每个顶点设置唯一的标识符。
  4. 创建一个布局对象,用于确定顶点在图中的位置。在这种情况下,我们可以使用StaticLayout类。
  5. 创建一个VisualizationViewer对象,并将图和布局对象传递给它。
  6. 创建一个定时器对象,用于定期更新顶点的位置。
  7. 在定时器的回调函数中,遍历图中的每个顶点,并为每个顶点生成一个随机的位置。
  8. 更新布局对象中每个顶点的位置。
  9. 调用VisualizationViewer的repaint()方法,以便更新可视化界面。

下面是一个示例代码,演示了如何在jung上设置顶点随机移动的动画:

代码语言:txt
复制
import edu.uci.ics.jung.algorithms.layout.StaticLayout;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseGraph;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.decorators.ToStringLabeller;
import edu.uci.ics.jung.visualization.renderers.Renderer;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

public class JungVertexAnimationExample {

    public static void main(String[] args) {
        // 创建一个有向图
        Graph<Integer, String> graph = new SparseGraph<>();

        // 添加顶点到图中
        graph.addVertex(1);
        graph.addVertex(2);
        graph.addVertex(3);
        graph.addVertex(4);
        graph.addVertex(5);

        // 创建一个布局对象
        StaticLayout<Integer, String> layout = new StaticLayout<>(graph);

        // 设置顶点的初始位置
        layout.setLocation(1, new Point(100, 100));
        layout.setLocation(2, new Point(200, 200));
        layout.setLocation(3, new Point(300, 300));
        layout.setLocation(4, new Point(400, 400));
        layout.setLocation(5, new Point(500, 500));

        // 创建一个VisualizationViewer对象
        VisualizationViewer<Integer, String> vv = new VisualizationViewer<>(layout);
        vv.setPreferredSize(new Dimension(600, 600));
        vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<>());
        vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR);

        // 创建一个定时器对象,每隔一段时间更新顶点的位置
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 遍历图中的每个顶点
                for (Integer vertex : graph.getVertices()) {
                    // 生成一个随机的位置
                    Random random = new Random();
                    int x = random.nextInt(600);
                    int y = random.nextInt(600);
                    Point location = new Point(x, y);

                    // 更新布局对象中顶点的位置
                    layout.setLocation(vertex, location);
                }

                // 更新可视化界面
                vv.repaint();
            }
        });

        // 启动定时器
        timer.start();

        // 创建一个窗口并显示可视化界面
        JFrame frame = new JFrame("Jung Vertex Animation Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(vv);
        frame.pack();
        frame.setVisible(true);
    }
}

这个示例代码使用了jung库来创建一个有向图,并在图中添加了5个顶点。然后,它创建了一个StaticLayout对象来确定顶点的初始位置,并创建了一个VisualizationViewer对象来显示图形界面。接下来,它创建了一个定时器对象,每隔一段时间更新顶点的位置。在定时器的回调函数中,它遍历图中的每个顶点,并为每个顶点生成一个随机的位置。然后,它更新布局对象中顶点的位置,并调用VisualizationViewer的repaint()方法来更新可视化界面。最后,它创建了一个窗口并显示可视化界面。

这个示例中使用的jung库是一个Java的图形库,用于可视化和操作图形数据结构。它提供了许多用于创建和操作图的类和方法。你可以在腾讯云的产品文档中了解更多关于jung库的信息:腾讯云产品文档链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python实现鼠标自动屏幕随机移动功能

本来想控制鼠标自动移动防止公司电脑自动休眠策略,然而,实现了并没什么卵用,还是会休眠。但还是分享出来吧。win10系统。...下面,我们就先从处理电脑屏幕开始介绍: 获得屏幕大小用W,H=gui.size(),W、H就分别表示屏幕宽、高;要截屏可以用im=gui.screenshot(),im就是截取屏幕快照图片;如果要获得屏幕...x,y,r,b,g): im=GetScreenShow() return gui.pixelMatchesColor(x,y,(r,b,g)) 如果屏幕上有个图片,我们怎样才能获得图片在屏幕位置和大小呢...,屏幕只有一个这样图片的话,这个列表就只有一项[(x1,y1,w1,h1)],表示这个图片位置(x1,y1)和大小(w1,h1). 其次,我们再看看鼠标是怎样被控。...() //获取当前鼠标位置 以上这篇Python实现鼠标自动屏幕随机移动功能就是小编分享给大家全部内容了,希望能给大家一个参考。

4.9K10

「Web Animation API 专题」纯手工撸一个图片随机移动动画

,然而,每个现行动画技术都存在一定缺点,如 CSS3动画必须通过JS去获取动态改变值,一个动画效果分散css文件和js文件里不好维护,setInterval 时间往往是不精确而且还会卡顿,引入额外动画封装库也并非对性能敏感业务适用...为了让大家对这个API有个清晰认识,笔者接下来系列文章里,用五六个例子让大家理解这个API,今天笔者将用此API实现一个随机移动图片开始进行介绍,比如用这个效果我们可以制作一个随机飘浮移动广告位...本篇文章预计时间 5 分钟 动画效果 开始前,我们先来看看完成后动画效果,示例如下效果: F4419A3F43C36C8C9E933A56B4655F9E.gif 页面布局 无论图片怎么随机移动,我们都希望指定容器里...,计算移动时间,封装移动动画。...此函数没有进行进行精确距离计算,只是判断了x和y轴移动距离大小用最大距离除以速度,示例代码如下: function velocity(prev, next) { var x = Math.abs

1.7K30
  • 「Web Animation API 专题」用原生JS制作一个图片随机移动动画

    ,然而,每个现行动画技术都存在一定缺点,如 CSS3动画必须通过JS去获取动态改变值,一个动画效果分散css文件和js文件里不好维护,setInterval 时间往往是不精确而且还会卡顿,引入额外动画封装库也并非对性能敏感业务适用...为了让大家对这个API有个清晰认识,笔者接下来系列文章里,用五六个例子让大家理解这个API,今天笔者将用此API实现一个随机移动图片开始进行介绍,比如用这个效果我们可以制作一个随机飘浮移动广告位...02 页面布局 无论图片怎么随机移动,我们都希望指定容器里,而不是漫无边际,首先我们html页面定义容器: 接下来定义容器样式: body...,计算移动时间,封装移动动画。...此函数没有进行进行精确距离计算,只是判断了x和y轴移动距离大小用最大距离除以速度,示例代码如下: function velocity(prev, next) { var x = Math.abs

    3.9K30

    【原创精品】随机森林因子选择应用基于Matlab

    以决策树为基本模型bagging每次bootstrap放回抽样之后,产生一棵决策树,抽多少样本就生成多少棵树,在生成这些树时候没有进行更多干预。...随机森林(randomforest)是一种利用多个分类树对数据进行判别与分类方法,它在对数据进行分类同时,还可以给出各个变量(因子)重要性评分,评估各个变量分类中所起作用。...(1)Giniimportance值 节点分裂过程中用Gini系数来衡量各节点样本纯度,Gini系数定为: 其中,P(j) 为该节点中属于类别 j 样本所占比例。...,生长每棵树中节点分裂随机选择变量子集中变量个数mtry,以及每棵树规模,在用于样本预测分类情况下,每个样本所占权重也可以设置。...基于随机森林因子选择方法 基于随机森林因子筛选求解流程图 随机森林算法因子重要性检测结果 本题提供了2014年和2015年两年数据,由于上市公司年报数据第二年4月30号之前出来,所以2014年数据选择区间为

    3.1K70

    ICML亮点论文:随机优化算法证明以及架构搜索应用

    前两篇是用数学方法证明了随机算法收敛性、寻找全局最优解优势。而后一篇是对于随机梯度法架构搜索应用。...随机设置下,AdaGrad-Norm 以 O(log(N)/√(N)) 速率收敛至驻点。批量(非随机设置下,以 O(1/N) 速率收敛。收敛精确度极高,且针对不同超参有很强鲁棒性。...作者接着对证明出收敛性算法进行了一系列实操实验,使用合成数据线性回归中得到了如下结果: ? 图 1:高斯数据随机设置下优化器表现。... CNN 和 ResNet 表现,AdaGrad-Norm 表现也十分出色,图 3 右上角,AdaGrad 非收敛性可以解释为梯度规范无边界性。...结构优化可以通过连续松弛或随机松弛将权重和架构耦合优化转化为可微分目标的优化,采用梯度下降或自然梯度下降策略,采用现有的自适应步长机制或恒定步长,可以同时优化网络权重和结构。

    1K20

    Atom linux 下安装有几率侧边栏默认显示右侧,移动到左侧设置方法

    Atom linux 下安装有几率侧边栏默认显示右侧,移动到左侧设置方法 遇到一个奇葩事情。没有macbook了。...我及其讨厌windows,于是给新来前端一台笔记本,安装上了archlinux系统。安装好atom编辑器之后,发现,侧边栏显示右侧,恶心坏了。 通过一番摸索,终于找到了设置选项。...如下: 打开 设置 → Packages → 一直往下翻,找到 tree-view → 点击 setting 或 设置 → 去掉Show On Right Side 勾选,然后就立即生效了。...中文网络应该是我第一个解决这个问题。除了archlinux , ubuntu 应该也有几率出现。不知道什么原因。 版权申明:本文由FungLeo原创,允许转载,但转载必须附注首发链接。谢谢。

    1.4K20

    Three.js 3D 粒子动画:群星送福

    ”粒子动画“ 这个词大家可能经常听到,那什么是粒子动画呢? 粒子是指原子、分子等组成物体最小单位。 2D 中,这种最小单位是像素, 3D 中,最小单位是顶点。...“群星送福”效果中,我们由群星打碎重组成了福字,实际就是群星顶点运动到了福字顶点,由一个 3D 物体变成了另一个 3D 物体。 那么群星顶点从哪里来?福字顶点又怎么来呢?...群星顶点其实是随机生成不同位置点,在这些点贴上星星贴图,就是群星效果。 福字顶点是加载一个 3D 模型,解析出它顶点数据拿到。...回调函数,我们回调函数里把 positions needsUpdate 设置为 true,就是告诉 tween.js 在这一帧要更新为新数值再渲染了。...我们要实现“群星送福”粒子动画,也就是从群星顶点运动到福字顶点。 群星顶点可以随机生成,使用 BufferGeometry 创建对应几何体。

    4.5K00

    QQ 25年技术巡礼丨技术探索下清新设计,打造轻盈简约QQ9

    我们可以把图像分成若干个网格,然后每个网格内进行顶点插值计算,如下图所示,二维图形中,每个网格会有4个顶点(同理,如果是在三维图形中,就会有8个顶点)。生成噪音图形如下右图所示。...Perlin 噪音相对会更加贴近我们想要效果,Perlin 噪音宏观视角也是重复,但当把噪音频率适当调整后,微观视角就会呈现出一种随机而又自然效果。...由于计算量过大,我们首先想到是进行下采样计算,把计算像素控制 1W 以内,这样 iPhone 耗时就降到 6ms 以内, Android 也降到了 15ms 以内,但由于 CPU 负载波动...同时我们把动画帧率从 60FPS 降低到了 30FPS,但这样性能损耗,对于 CPU 还是有不少压力,特别是一些 Android 低端机型,压力会更大。如何进一步提升性能呢?...fialment 引擎目前支持 glb 和 gltf 两种格式模型,里面包含了摄像机、纹理、皮肤、模型顶点数据、材质、光照、顶点数据、动画、骨骼等。

    2.7K43

    (数据科学学习手札03)Python与R随机数生成异同

    随机使用是很多算法关键步骤,例如蒙特卡洛法、遗传算法中轮盘赌法过程,因此对于任意一种语言,掌握其各类型随机数生成方法至关重要,Python与R随机数底层生成都依靠梅森旋转(twister...)来生成高质量随机数,但在语法存在着很多异同点。...i in range(10)] random.shuffle(list) print(list) [6, 8, 2, 4, 5, 3, 0, 7, 1, 9] 5.random.seed() 以括号中整数为起点设置随机数种子...,同样随机数种子设置后生成随机数相同 random.seed(42) print(random.permutation(5)) random.seed(42) print(random.permutation...random.randint(1,10,5) Out[29]: array([2, 9, 8, 8, 9]) R 作为专为统计而生一种语言,R随机数生成上自然是异常丰富,这里仅举常用一些随机数生成函数

    93270

    Three.js 粒子系统学习小记:礼花效果实现

    texture applied. threejs官网如是说,sprite是一直面向camera平面,并且我们可以用其创建基于屏幕坐标移动、定位和缩放对象,而不影响三维场景中其他物体(做到互不影响必须单独创建一个用于...position(如果将每个粒子设置为一个几何体每个顶点,则效果和point粒子系统相似)。...group.add(particle); } 飞线动画实现 每一帧render中,判断每个粒子y坐标小于一定值时,以不同速度按照正弦曲线轨迹向上运动,形成飞线动画效果。...粒子初始化时候,为了实现绽放时球形效果,定义了一个球体几何体,得到球体顶点数作为粒子总数,用tweenMax设置了每个粒子绽放到最大时位置,即了相应球体顶点位置再增减一些随机数,并设置随机绽放时间...当粒子量级非常大时,可以用BufferGeometry来代替Geometry顶点,因为它可以将数据存储缓冲区中,减少数据传递到GPU成本,同时因为缓冲区,所以更适合静态物体。

    20K43

    ThreeJs Demo 之创建星空效果

    场景,包括相机和渲染器 创建和添加星星对象到场景中 实现动画效果,使星星不断旋转 使用 dat.GUI 控件动态调整星星颜色、大小和数量 处理窗口调整事件,确保渲染器和相机设置随窗口大小变化而更新...创建一个 WebGL 渲染器 renderer,设置渲染器尺寸,并将其添加到文档 body 中。...函数中,创建一个几何体 geometry 和一个空顶点数组 vertices。...个 随机顶点数组 geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3...因此,返回 stars 对象是一个包含 1000 个星星集合。 5. 动画循环 定义 animate 函数,用于执行动画循环。 每帧中,旋转星星并渲染场景。

    12710

    「深度」错过了移动intel,能否虚拟现实扳回一局?

    对于这家PC巨头而言,一度超过80%PC处理器市场占有率让其早年IT市场占尽优势。然而随着移动市场崛起,精简指令集架构ARM成为了移动处理器主流,intel逐渐日薄西山。...intel想象,缓慢步伐再次制约了intel移动领域进一步扩张。...体制僵硬 互联网时代奉行战术是“天下武功,唯快不破”,但历经了几十年发展intel偏偏在这点无法跟上时代,大公司病intel身上开始逐步显现,体制僵硬、步伐缓慢,与ARM等模式轻盈“年轻”公司相比...2、发挥工艺优势,折中功耗与性能,扬长避短,打造真正性价比高VR应用级芯片 intel之所以移动时代落后,很大一部分原因是性能与功耗无法做到平衡,其实intel芯片制程工艺以及处理性能是完全领先于竞争对手...,可叹移动设备对于功耗要求及其苛刻,而如今电池技术又没有很大突破,无奈造成了采用复杂指令集intel移动尴尬局面。

    57430

    【Python】扫盲帖:关于Windows、Linux和Mac安装设置Python问题

    我提供了一个循序渐进过程,你可以通过以下三个平台上设置Anaconda来安装Python: Linux macOS Windows 2 目录 数据科学重要工具 Linux安装Python步骤...macOS安装Python步骤 Windows安装Python步骤 3 数据科学重要工具 数据科学家工具箱可能会让你大吃一惊,因为工作不同方面可能需要多个工具。...让我们来看看如何在我们自己机器同时设置Anaconda和Miniconda! 5 Linux安装Python步骤 Linux是数据科学界广泛喜爱平台。...完成上述步骤后,将要求你打开另一个终端以激活Miniconda,打开一个新终端,我们开始处理接下来步骤 第三步:创建新环境 环境基本就是你"工作区"。你想怎么设置就怎么设置。这非常酷!...观看视频^2,获得macOS安装Python完整运行过程: 7 Windows安装Python步骤 让我们看看在Windows安装Python和其他数据科学库步骤。

    3.1K30

    谁还没有冰墩墩?速来领→

    本例中页面加载进度就是 onProgress 中完成,当页面加载进度为 100% 时,执行 TWEEN 镜头补间动画。....displacementMap[Texture]:位移贴图会影响网格顶点位置,与仅影响材质光照和阴影其他贴图不同,移位顶点可以投射阴影,阻挡其他对象,以及充当真实几何体。....displacementBias[Float]:位移贴图在网格顶点偏移量。如果没有设置位移贴图,则不会应用此值。默认值为 0。...THREE.Points 是用来创建点类,也用来批量管理粒子。本例中创建了 1500 个雪花粒子,并为它们设置了限定三维空间随机坐标及横向和竖向随机移动速度。...: 添加更多交互功能、界面样式进一步优化 吉祥物冰墩墩添加骨骼动画,并可以通过鼠标和键盘控制其移动和交互 完整开源代码: https://github.com/dragonir/3d/tree/master

    4.5K10

    大学课程 | 计算机图形学,基于MFC和二维变换画图软件

    其中,鼠标左键按下并移动时,使用橡皮筋技术,即移动过程中选用画笔颜色取反模式(SetROP2(R2_NOT)),即可消除移动过程中不断绘制图形,鼠标左键抬起时,设置画笔为颜色覆盖模式(SETROP2...2.2.6 自由画笔 鼠标左键按下,并且移动过程中,通过不断触发OnMouseMove消息映射,移动位置和上一个位置间连线,即可实现自由画笔功能。...箭头包括7个顶点。拉取矩形起点坐标为(pStart.x,pStart.y),终点坐标为(pEnd.x,pEnd.y)。...根据箭头矩形中绘制时对应比例,7个顶点坐标为: P1 (pStart.x, pStart.y-dy0/2); P2 ( (pStart.x+dx0/2,pStart.y); P3 (pEnd.x...并且,动画制作过程中,我们又进一步加强了对于二维变化理解,知道了图形变化本质还是数学计算。

    2.4K40

    如何设置让我们Ubuntu 14.04加密多个Apache虚拟主机证书

    本教程将向您展示如何在Ubuntu 14.04服务器中设置来自Let加密 TLS / SSL证书,以保护Apache多个虚拟主机。 我们还将介绍如何使用cron作业自动执行证书续订过程。...当您准备好继续前进时,请使用您sudo帐户登录您服务器。 第1步 - 下载Let加密客户端 使用Let's Encrypt获取SSL证书第一步是服务器安装该certbot软件。...您可以将当前Apache安装程序中配置任何其他子域包括为虚拟主机或别名。...Certbot renew命令将检查系统安装所有证书,并在不到30天时间内更新任何设置为过期证书。--quiet告诉Certbot不输出信息也不等待用户输入。 cron现在将每天运行此命令。...结论 本指南中,我们了解了如何从Let's Encrypt安装免费SSL证书,以保护Apache多个虚拟主机。我们建议您不时查看官方Let's Encrypt博客以获取重要更新。

    1.7K00

    Android 如何实现气泡选择动画

    我清楚知道绘制如此快速动画在 Canvas 绘制效率是不够,所以决定使用 OpenGL (Open Graphics Library)。...动画实现中,我使用两个关联三角形代表一个实体,所以我画圆地方像一个正方形。 绘制一个形状至少需要两个着色器 —— 顶点着色器和片段着色器。通过名字就可以区分他们用途。...动画中圆有两种状态 —— 普通和选中。普通状态下圆 texture包含文字和颜色,选中状态下同时包含图像。因此我需要为每个圆创建两个不同 texture。...每次画面绘制,都需要调用 World  step() 方法移动所有的实体。之后你可以图形新位置进行绘制。 我遇到问题是 World 重力只能是一个方向,而不能是一个点。...你可以随机使用本组件! 我们组件可以让应用更聚焦内容、原始以及充满乐趣。

    2.7K20

    ABC动画插件Alembic从浅入深(Unity3D)

    虽然默认是有效,但是切线计算是麻烦过程,不需要情况下可以设置成Compute可以更加高效 Camera Aspect Ratio:设置相机纵横比。...Interpolate Samples:是进行动画插值运算设定。如果这是有效,Transform、Camera和顶点不变化(=顶点数和索引不变)Mesh就会得到动画插值。...Alembic/Standard着色器是普通Standard着色器基础添加基于上述velocitymotion vector生成着色器。...AlembicStreamPlayer组件 由插件生成prefab有一个叫做AlembicStreamPlayer组件,它负责播放。 移动Time参数可以确认Mesh移动。...如果设置为Uniform那么就可以Fix DeltaTime开始俘获,改写Time. maxdeltatime Unity方面也固定Delta时间。

    2.6K10
    领券