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

SFML如何让各种形状在随机方向上移动?

SFML(Simple and Fast Multimedia Library)是一个跨平台的多媒体库,用于开发2D游戏、图形界面和多媒体应用程序。要让各种形状在随机方向上移动,可以通过以下步骤实现:

  1. 创建SFML窗口:使用SFML库的RenderWindow类创建一个窗口,设置窗口的大小和标题。
  2. 创建形状对象:使用SFML库的Shape类或其派生类(如RectangleShape、CircleShape等)创建各种形状的对象。设置形状的位置、大小、颜色等属性。
  3. 生成随机方向:使用C++的随机数生成器(如std::random_device和std::uniform_real_distribution)生成随机的方向向量。可以通过设置随机数的范围来控制移动的速度和方向。
  4. 更新形状位置:在每一帧中,根据随机生成的方向向量,更新形状的位置。可以使用形状对象的move()方法将形状沿着指定的方向移动。
  5. 处理边界碰撞:检测形状是否与窗口的边界相交,如果相交,则改变形状的移动方向,使其在窗口内继续移动。
  6. 渲染形状:在每一帧中,使用窗口的draw()方法将形状对象渲染到窗口上。

下面是一个示例代码,演示了如何使用SFML实现各种形状在随机方向上移动:

代码语言:txt
复制
#include <SFML/Graphics.hpp>
#include <random>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Shapes Moving");

    // 创建形状对象
    sf::RectangleShape rectangle(sf::Vector2f(100, 50));
    rectangle.setFillColor(sf::Color::Red);
    rectangle.setPosition(100, 100);

    sf::CircleShape circle(50);
    circle.setFillColor(sf::Color::Blue);
    circle.setPosition(400, 300);

    // 创建随机数生成器
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_real_distribution<float> dis(-1.0f, 1.0f);

    sf::Vector2f rectangleDirection(dis(gen), dis(gen));
    sf::Vector2f circleDirection(dis(gen), dis(gen));

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        // 更新形状位置
        rectangle.move(rectangleDirection);
        circle.move(circleDirection);

        // 处理边界碰撞
        if (rectangle.getPosition().x < 0 || rectangle.getPosition().x + rectangle.getSize().x > window.getSize().x)
            rectangleDirection.x = -rectangleDirection.x;
        if (rectangle.getPosition().y < 0 || rectangle.getPosition().y + rectangle.getSize().y > window.getSize().y)
            rectangleDirection.y = -rectangleDirection.y;

        if (circle.getPosition().x - circle.getRadius() < 0 || circle.getPosition().x + circle.getRadius() > window.getSize().x)
            circleDirection.x = -circleDirection.x;
        if (circle.getPosition().y - circle.getRadius() < 0 || circle.getPosition().y + circle.getRadius() > window.getSize().y)
            circleDirection.y = -circleDirection.y;

        window.clear();
        // 渲染形状
        window.draw(rectangle);
        window.draw(circle);
        window.display();
    }

    return 0;
}

在这个示例中,我们创建了一个窗口,然后使用RectangleShape和CircleShape创建了一个矩形和一个圆形。通过生成随机的方向向量,更新形状的位置,并处理边界碰撞,使形状在窗口内随机移动。最后,使用窗口的draw()方法将形状渲染到窗口上。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobile
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云音视频通信(TRTC):https://cloud.tencent.com/product/trtc
  • 腾讯云音视频 AI(TVA):https://cloud.tencent.com/product/tva
  • 腾讯云元宇宙(Tencent Real-Time Volumetric Cloud):https://cloud.tencent.com/product/trvc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《译 SFML Essentials 英文版》—— 《第一章》 SFML 入门

SFML中,这再容易不过了。...● 我们可以创建窗口时指定各种配置—— window size, title, style, and graphics settings....另一面,RectangleShape 总是有四个顶点。这两种构造函数都有它们的大小 —— 圆的半径和矩形的宽度和高度。 ● ConvexShape是一种我们必须显式指定顶点的形状。...我们将在第3章中探讨如何在执行动画和游戏逻辑时管理时间。​​​​​​​ 现在,让我们看看如何实时控制形状。​​​​​​​...---- Controlling shapes ---- ● 使形状移动的一种方法是使用事件处理。 当玩家点击某个键时,我们开始移动该对象,并且当该键被释放时我们可以停止移动该对象。

3K30

现代OpenGL(一):我的第一个OpenGL程序

OpenGL 3.0以前的版本或者使用兼容模式的OpenGL环境,OpenGL包含一个固定管线(fixed-function pipeline),它可以不使用着色器的环境下处理几何与像素数据。...从OpenGL的几何图元中设置数据,用于构建形状。 2. 使用不同的着色器(shader)对输入的图元数据执行计算操作,判断它们的位置、颜色,以及其他渲染属性。 3....https://open.gl/context这个教程中,作者提到了三个用于取代GLUT的第三库:SFML、SDL、GFLW有兴趣的朋友可以自己Google一下这些库。...由于SFML(Simple and Fast Multimedia Library)是使用C++编写的,我本人比较喜欢使用C++而非C语言,所以下面的示例程序会使用SFML库。...---- 第三库的配置 由于我们这里需要用到好些第三库,这里顺便说一下Visual Studio中如何使用第三的C++库。

2.2K30
  • 单变量和多变量高斯分布:可视化理解

    他知道如何将一个主题分解成小块,使它更容易解释。 他使用了一些可视化方法,人们很容易理解高斯分布及其与相关参数(如均值、标准差和方差)的关系。...注意曲线的形状和范围是如何随不同的sigma变化的。 图1 这是一组随机数的概率分布mu = 0,而sigma = 1。 在这幅图中,mu是0,这意味着最大的概率密度是0,sigma是1。...这是计算多元高斯分布概率的公式, 多变量高斯分布的可视化表示 本节中,我们将看到多元高斯分布的可视化表示,以及曲线的形状如何随mu、sigma以及变量之间的相关性而变化。...x1和x2向上,当mu为0时,最大的概率密度为0。 中间的深红色区域是概率密度最高的区域。浅红色、黄色、绿色和青色区域,概率密度继续降低。深蓝色区域是最低的。...图13 图13中,mu对于x1 为1.5,对于x2 mu为-0.5。 x1向上最高概率点是1.5。同时,对于x2向,最高概率点为-0.5。 总的来说,整个曲线都在移动

    1.3K31

    Unity基础教程系列(七)——可配置形状(Variety of Randomness)

    并且这会旋转与时间步长无关。 ? 1.2 随机旋转 下一步是给每个形状一个随机的角速度。...(随机速度) 2.4 逐个生成区域的速度 给每个形状一个随机的运动方向会产生一个相当混乱的场景。相反,我们可以所有形状都朝着同一个方向移动。...但不是只使用单一的统一向,我们可以给每个生成区使用一个独特的速度。这会创建更精细的关卡成为可能。 当前,游戏会创建并配置每个新形状,并要求关卡提供生成点。...3.1 移动方向 首先,让我们可以向前或向上移动方向之间进行选择。要明确显示此选择,请创建SpawnMovementDirection枚举类型。...现在我们可以ConfigureSpawn中检查移动方向是否设置为向上。如果是的话,请使用transform.up,否则请继续使用transform.forward。 ? ?

    2.7K30

    程序员必练六大项目:从数据结构到操作系统,计算机教授为你画重点

    每当我不知道该拿什么练手,或者想学习一种新的编程语言或框架时,我就会从以下项目中选择一种开始coding: 每个程序员都应该尝试的挑战性项目 文本编辑器 不使用GUI框架中内置的文本框组件,要如何搭建支持光标移动...这个项目中,存在两个主要挑战: 如何将文本文档存储在内存中 学习文本光标流行的编辑器中的行为 不要小看这些基础的功能,其中有许多细节值得注意。...比如当光标位于文本当中,按下向上箭头,光标会移动到何处? ? △图源:Austin Z....最好使用SDL,SFML,PyGame这样的2D图形库。 ? △图源:Austin Z. Henley 第一步,创建对象移动的效果。 第二步,了解有关游戏循环的所有信息。...游戏实际上是绘图、获取用户输入和处理游戏逻辑之间循环。 第三步,处理用户输入。 第四步,学习如何创建和管理所有游戏对象及其状态。比如如何生成动态数量的敌人。 第五步,学习如何应用游戏的逻辑。

    1.6K10

    用 Wolfram 语言制作圣诞动画

    为了动画更加生动有趣,我们歌曲的下半部分增加了雪花飘落的场景和圣诞树大幅度充满喜感的摇动。...树枝的梢端略微向上,以具有圣诞树的标志性形状。在其最宽的尺寸上,使树枝与锥体(树干)平滑地拟合。变量 τ 和 σ 分别确定树梢的上下运动和左右位置。...这里有一棵树,彩球直上直下地排列,球的颜色随机。 树上球的排列方向随机。如果后来树枝移动了,将计算球的自然运动(即对应的运动方程的解)。 五角星 现在来做五角星。...也允许枝梢的饰物倾斜和着色。 所有树枝和指挥枝的静止位置拉长,蜡烛倾斜。 三棵树,随机选择所有参数。 下面的互动演示允许移动树枝, 允许装饰物绕枝梢移动,并允许根据个人喜好给装饰物着色。...这是得到的指挥棒的形状。 枝条根据乐音的运动 将声音"翻译"成树枝的运动有各种各样的方式。我们给出两种可能性, 一种与声音的频率有关, 另一种基于音符的开始。

    1.6K20

    Python turtle 模块可以编写游戏,是真的吗?

    强调一下: 通过主画笔创建更多的画笔,以及为每一个画笔设置不同的形状。是编写游戏的关键,游戏中的每一个角色,其本质是一支画笔,我们只是控制画笔画布上按我们设计好的轨迹移动。...如上代码记录了一个圆的绘制过程,也就是创建了一个圆形的画笔形状移动到某个位置函数: 此函数用来某一支画笔移到指定位置,不留下移动过程中的轨迹。...3.4 小球动起来 怎样小球动起来? 每隔一定时间,小球重新移动。...turtle.ontimer(ball_move, 100) 是小球动起来的核心逻辑,每隔一定时间,重新移动红、蓝、绿外观如圆形状的小球。...ran_gb_ball(green_balls, 'green') # 随机创建蓝色小球 ran_gb_ball(blue_balls, 'blue') # 绿色小球移动

    1.4K10

    UI设计之动画—从虚拟到现实

    它是一种运动设计,用于将特定想法投入真实产品之前传达它。在用户界面设计中,我们可以看到概念动画的各种使用场景,用于交互,过渡,控件的操作,系统反馈的动画标记等。...但是,静态设计(字形,图标,改变颜色和控件的形状或整个界面)和UI的动画提供了应用程序从类似应用程序(有时看起来像克隆)中脱颖而出的方法。...Tubik,我们有很多成功的案例,即使是非常复杂的动画也能由第三开发人员成功编码实现。 实践表明,技术方面,概念动画的实现是一个花时间的工作,但不是不能实现。...动画概念试验更新的材料设计(图二) UI动画概念的示例 滚动项目列表 第一个示例包含与项目列表的交互:左侧变体只是将所有列表向上移动,但是右侧变体模仿拉动卡片设计的。...扁平化设计时代,当形状和颜色追求简洁时,紧张竞争中,动画成为应用程序和设计解决方案脱颖而出的可靠方法。 ?

    1.1K60

    Unity基础教程系列(十)——卫星(Shape Relationships)

    现在,我们将人造卫星的尺寸缩小为焦点形状的一半,将其定位在其上方一个单位,然后使其向上移动。 ? 还需要为卫星赋予颜色,就像为焦点形状赋予颜色一样。...我们可以SpawnShape返回形状列表,但是目的是在生成形状时将形状添加到形状列表中,而不管何时何地。可以通过转换类的功能来实现,并再次通过静态Instance属性使Game可用。...从上方看时,它将导致卫星从焦点形状的右侧开始并逆时针旋转。 ? 为了使卫星移动,还需要调整其GameUpdate中的位置。...2.4 随机轨道轴 目前,我们的卫星始终XZ平面上绕轨道运行,围绕以焦点形状为中心的Y轴旋转。我们可以通过Random.onUnitSphere检索轨道轴,从而使轨道轴随机化。 ?...创建有效实例引用的唯一法是通过具有单个shape参数的构造函数方法,我们使用该参数设置引用并复制其当前实例标识符。 ?

    1.6K21

    神经网络的数学基础

    network.evaluate(test_images,test_labels) print('test accuracy:',test_acc) # test accuracy: 0.9727 由上面的程序,我们了解了如何构建网络以及如何进行网络训练来识别手写字体...如果两个加法运算的张量形状不相同会发生什么?小张量会广播匹配到大张量上。广播由两步组成: 小张量会添加axes广播轴,以匹配大张量的ndim轴维度。 小张量新添加的轴方向上重复以匹配大张量的形状。...首先,添加一个新轴到张量y上,形状变成(1, 10);然后,新轴方向上重复y32次,最终张量Y形状为(32,10),X、Y形状相同,可以进行加法运算。...训练过程通常需要反复进行: 获得训练数据X,y的一个batch 批量; 前向传播得到批量X上的预测值y_pred; 计算当前批量下的损失值:计算y_pred和y之间的差异度; 损失函数减小的方向上更新权重系数...小结 学习指在训练数据上找到一组权重值使得损失函数最小; 学习过程:小批量数据上计算损失函数对应权重系数的梯度值;之后权重系数沿着梯度的反方向移动; 学习过程的可能性是基于神经网络是一系列张量操作,因此能够使用导数的链式法则计算损失函数对应权重系数的梯度值

    1.3K50

    OReillyAI系列:将学习速率可视化来优化神经网络

    原始随机梯度下降(SGD)中,学习速率与误差梯度的形状无关,因为它使用了一个与误差梯度无关的全局学习速率。...接近训练结束时,学习速率的衰减应在100倍左右或更高。这种衰减使学习好的网络能够抵抗可能使学习失败的随机波动。在这里,我们将会先选择一个小的学习速率一个小的数据集上测试,并选择适当的值。...动量是一种自适应学习速率方法的参数,它允许以较高速度平缓方向上移动,而在陡峭方向上降低速度。这种动量定义被认为是“经典动量”,它会对速度进行校正然后速度方向上大跳跃移动。...动量有助于根据梯度的变化加速或减速基础学习速率,将引起净学习速率的变化而不影响其损失函数表面上的位置。动量使学习到的网络更能抵抗输入中的噪声和随机性。...Tieleman和Hinton2012年提出的RMSProp自适应学习速率,其保留了每个权重的平方梯度的移动平均值以正规化当前梯度。RMSProp增强了抵抗波动和随机噪声的能力。

    67580

    30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

    与其他关节组件不同,Relative Joint 2D允许开发者指定相对移动向量,而不是像其他关节组件一样强制物体特定方向上移动。...对象可以沿着线自由移动以响应碰撞或作用力,或者对象也可以通过电动力移动,并施加限制以使其位置保持在线的某个部分之内。 用于将两个物体连接在一起,并允许它们特定方向上相对移动。...用于UI界面中显示可点击的按钮。它可以用于用户UI界面中进行各种操作,例如打开菜单、选择关卡等。...Aim Constraint可以不同的方向上约束对象,例如只水平方向上约束、垂直方向上约束、在任意方向上约束等。...与Aim Constraint不同的是,Look At Constraint可以实现更加自然的朝向效果,可以不同的方向上约束对象,例如只水平方向上约束、垂直方向上约束、在任意方向上约束等。

    2.6K35

    使用c++SFML制作月圆之夜总集篇

    写在开头 重新以时间线的形式整理一下去年使用c++的SFML库制作月圆之夜(游戏程序设计大作业)的开发过程,括号里面是新的补充以及对一年前自己的吐槽 因为是大二转专业后做首次接触游戏开发后才做的...#pragma once #include using namespace sf; class Button :public Sprite { //继承SFML...4月11日 功能实现 完善卡牌绘制 完善随机抽牌 卡牌加载 我们使用循环将文件夹里的图片依次加载到纹理之中,因为素材有点多,所以我们加载需要一些时间,我们先加载十张,看看是不是从十张的卡池中随机抽牌...鼠标卡牌上”的前提下,需要用bool变量来判断可否播放 class Button :public Sprite { //继承SFML的Sprite类 public: bool hoverSd;...void move(Vector2i); //卡牌移动 Vector2f originPosition; //初始位置 Vector2i originMouse; //初始鼠标位置 卡牌移动 void

    3.4K10

    猎豹蓬松的尾巴如何为高速敏捷的机器人提供灵感

    大数据文摘出品 来源:IEEE 编译:Hippo 不到十年前,加州大学伯克利分校的研究人员为一辆小型机器人汽车配备了一个末端带有重物的驱动金属杆,并用它来展示蜥蜴空中跳跃时如何用尾巴来稳定自己。...第一作者Joseph Norby一封电子邮件中告诉我们:“我们用完整的毛茸茸的尾巴来模仿猎豹的皮毛,但发现半圆柱形状迄今为止阻力最大。将拖动元件减少到尾端是效率和刚度的平衡。...我们本可以拖动元件覆盖尾巴的整个长度,但实际上靠近尾尖的部分产生了大部分阻力。缩短拖动元件的长度有助于保持尾巴的形状。”...这也许可以构成一种类似于划独木舟的新控制形式:一个方向上移动时增加阻力,而在另一向上减小阻力可以产生更多的净控制权。对于不能与环境相互作用的惯性尾巴,这是完全不可能的。...尽管轻质气动拖尾这个创意是从动物身上首先得到的,但在利用这些优势或是基于尾部特点进行设计时,我们没有理由将自己限制类似动物的形状因素上。

    33730

    身形千变万化!MIT开发出太空探索神器——模块化自重构微型机器人

    这些电磁体之间的相互排斥和吸引作用,使得机器人能够彼此旋转和移动,并迅速改变形状。...它不需要电机或推进剂来移动,并且可以微重力环境下运行 那么这样一堆模块是如何交互的呢?为了更好地可视化,科学家们使用了一种软件规划器来对重构这一过程进行可视化并计算底层的电磁分配。...这样一种系统可以用户合理范围内随心玩转模块,比如你可以改变其速度,突显磁铁,以及将必要的动作显示出来以避免碰撞。...你还可以如魔术师一般变换模块的形状它们能够某一时刻呈现为一把椅子,随即又变为一张沙发。 图注:立方体从椅子重构为桌子、沙发 这些成本廉价的小模块尤其适合微重力环境。...该软件的用户可以指定哪一个立方体在哪一向上进行旋转,而算法会自动计算出所需的电磁分配的顺序和地址(排斥、吸引或关闭)。 未来,模块化机器人的应用场景将从太空转向地面。

    46230

    Unity基础教程系列(三)——复用对象(Object Pools)

    (回收各种形状的展示) 1 销毁对象 如果我们只能创造形状,那么它们的数量只会增加,直到我们开始一个新的游戏为止。但大部分的时候,当一些物体游戏中被创建时,它也应该可以被销毁。...(配置创建和销毁的快捷键) 1.2 销毁随机形状 Game中添加一个DestroyShape方法来处理一个形状的销毁。就像我们创造随机形状一样,我们也销毁随机形状。...(创建Speed的滑块层次结构) 将滑块直接放置标签下方。默认情况下,它们具有相同的宽度,并且标签在文本下面有足够的空白空间。你可以将滑块向上拖动到标签的底部边缘它会吸附到它的旁边。 ?...你现在可以游戏创建一个规则的新形状流,一个理想的速度高达10个形状每秒。如果你想关闭自动创建过程,只需将滑块设置回零。...所以每次游戏会破坏一个形状,而不是我们应该把它们送回工厂回收。 回收形状是可行的,因为它们使用过程中不会改变太多。它们有随机的transform、材质和颜色。

    2.8K10

    效率至上—全新微云

    有着不同背景和知识的司机,从四面八进入立交桥,然后短短几秒内决定从哪个出口出去。如果错过了出口,就可能去往完全相反的方向。...我们设计移动APP时,当然没有设计立交桥这么紧迫。如果说有相似的地方,可能目标都是用户能够不假思索做出正确的行为,不要走到相反的方向上去,也不要思考过久。...这样的好处一面是将常用操作放在更显眼的地方,另一面是固定的位置操作,适应拇指的记忆。 ? 上传入口固定在底部 更突出 左图中的顶部背景色过重,干扰用户预览内容。列表页的高度不够会显得很拥挤。...我们决定对图形进行简化、强化图标本身的形状。根据文档本身的颜色去定义颜色的使用。这样可以文档内容图标更简洁,图形符合用户对它本身的认知,这样更容易识别。 ? 新版文档类型图标识别性更强 ?...日常生活中用户想对一些书籍扫描电子化、各种票据的信息采集、名片上的关键信息提取都比较麻烦,需要一个个的字去输入在手机里。

    1.6K30

    iOS进阶之CAEmitterLayer

    这是一个很好的选择,包括火花或烟花: 举例来说,你可以通过同一点上创建所有的粒子并在它们消失之前它们飞向不同的方向,从而产生火花效应。 ?...Line shape 一个发射器形状的kCAEmitterLayerLine发射器框架的顶部创建了所有的粒子。...这种发射器形状对许多不同的效果都有好处,包括碳酸饮料中的气泡和爆米花。由于雪花在整个天空中都是随机的,所以矩形发射器形状对于你的项目来说是一个不错的选择。...这些粒子最终会以不同的角度从x轴向上运动,而不是竖直向上。如图: ?...绿色和蓝色的组件值现在是0.7到1.3之间的随机值;但是,超过1.0的值被限制1.0,所以有效范围是0.7到1.0。由于“正常”值为0.9,红色组件将被限制0.6到1.0之间。

    1.4K80

    梯度下降原理解析

    1 原理 机器学习的核心内容就是把数据喂给一个人工设计的模型,然后模型自动的“学习”,从而优化模型自身的各种参数,最终使得某一组参数下该模型能够最佳的匹配该学习任务。...梯度下降法就是实现该“学习”过程的一种最常见的方式,尤其是深度学习(神经网络)模型中,BP反向传播方法的核心就是对每层的权重参数不断使用梯度下降来进行优化。...寻找最小点过程 那么问题就是如何找到下一个点 ? ,并保证 ? 呢?假设我们当前的函数 ? 的形式是上图的形状,现在我们随机找了一个初始的点 ?...沿着某一向走一小步 ? 得到的。此处的关键问题就是:这一小步的方向是朝向哪里? 对于一元函数来说, ? 是会存在两个方向:要么是正方向( ? ),要么是负方向( ?...),如何选择每一步的方向,就需要用到大名鼎鼎的泰勒公式,先看一下下面这个泰勒展式: ? 左边就是当前的 ? 移动一小步 ? 之后的下一个点位,它近似等于右边。

    54510

    Three.js camera初探——转场动画实现

    这是three.js建模的简单流程图例: 用通俗的话来讲,首先可以用js创建各种形状的几何体,或者从外部导入建好的模型文件,然后为几何体添加材质(纹理、颜色等),就组成了一个网格模型mesh,我们可以创建很多的模型...既然是通过照相机去拍摄场景,让我们屏幕上可以看到,那么移动照相机用不同的角度拍摄这个世界,自然就可以看到不一样的世界了。...,处于z轴正方向上离原点500处。...所以需要计算照相机的位移,如下图: 我们已知正方体的边长a,假设照相机与正方体中心点的距离设置为3a,利用相似三角形边长等比例的原理得出照相机的该移到的地方(x2,z2)坐标,公式如下: 为了正方体具备随机摆放的感觉...,还可以正方体再绕y方向随机转动一定角度,照相机再绕正方体的中心点旋转到正对正方体正面的位置: 计算方法如下: 如上图所示,照相机原来是正方体中心和原点的连线上的坐标(x,z),绕正方体的中心点

    21.1K63
    领券