如何在屏幕上的网中对对象进行分组?

我正在做一个关于思考和记忆过程的模拟,我有一些图片(例如:奶牛、飞机、橘子)需要在屏幕上以类似思维导图的风格展示。每个对象都与其他三个对象相连,并且看起来应该像一张网。

我可以使用什么算法?另外,我正在使用 JS,但伪代码或解释也行。


回答:

  • 首先,将您的数据放入一个可用的结构中:
  • 按顺序绘制您的节点,同时也绘制 ID 大于当前节点的兄弟节点。
  • 您需要在当前节点周围以 120 度的偏移量绘制您的兄弟节点,以形成您的网络(3 个兄弟节点,360/3 = 120)。

一些 JavaScript 代码来展示:

// 初始化你的数据var nodes = {    1: {src: "imageA", siblings: [2,3,4]},    2: {src: "imageB", siblings: [1,5,6]},    3: {src: "imageC", siblings: [1,7,8]},    4: {src: "imageD", siblings: [1,9,10]},    5: {src: "imageE", siblings: [2]},    6: {src: "imageF", siblings: [2]},    7: {src: "imageG", siblings: [3]},    8: {src: "imageH", siblings: [3]},    9: {src: "imageI", siblings: [4]},    10: {src: "imageJ", siblings: [4]},}// 初始化我们将要用到的一些常量var DIST = 200; // 图像之间的像素距离var IMGW = 64; // 图像宽度var IMGH = 64; // 图像高度var SCX = 400; // 屏幕中心 x 坐标var SCY = 400; // 屏幕中心 y 坐标var DEGSSTART = 90; // 起始角度偏移var DEGFLIP = 180; // 添加以翻转方向var DEGSTEP = 120; // 圆 360 / 3// 注意:如果你的兄弟节点多于 3 个,请适当更改 DEGSTEP// 主函数function drawWeb(nodes, id, cx, cy, prevDeg) { var node = nodes[id]; // 绘制当前节点/图像 var xOff = cx - (IMGW / 2); var yOff = cy - (IMGH / 2); drawImage(node.src, Math.round(xOff), Math.round(yOff)); // 递归地绘制兄弟节点 var newDeg = prevDeg + DEGFLIP + DEGSTEP;  for(var i=0; i<node.siblings.length; i++) {  var newId = node.siblings[i];  if(newId > id) {   // 转换为弧度并计算新位置   var rad = newDeg * Math.PI / 180;   var newCX = cx + DIST * Math.cos(rad);   var newCY = cy + DIST * Math.sin(rad);   drawWeb(nodes, newId, newCX, newCY, newDeg);   newDeg += DEGSTEP;  } }}// 你可以自定义的绘制函数// 使用 jquery 或其他方法function drawImage(src, x, y) { // 填充代码以将图像放在屏幕上 console.log(src + ': ' + x + ', ' + y);}// 测试drawWeb(nodes, 1, SCX, SCY, 90);

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注