惯宣-CGX_ 发表于 2023-9-25 02:03:40

【命令】常见几何的命令画法汇总

本帖最后由 惯宣-CGX_ 于 2023-12-8 02:40 编辑


常见几何的命令画法汇总


『定义』

【点】
1、点:点是不可再分割,体积为1的方块。

【线】
2、线:线是宽度最小为1的长度。
3、线的两端是点。
4、直线:直线是任意两点连接起来的最短的线。
5、曲线:曲线是具有曲率的线。

【面】
6、面:面具有1以上的宽度和长度。
7、面的边是线。
8、平面:平面是任意两直线连接起来长度最短的面。

9、圆:圆被圆周包围,且由圆心到圆周的距离相等。
10、椭圆:椭圆是圆的拉抻。椭圆中离圆心最远端和最近端的距离之和等于拉伸前圆的直径。

【体】
11、立体:立体具有宽度、长度和高度。
12、立体的边界是面。

13、圆柱:圆柱是具有高度的圆。
14、球体:球体具有球心。


『公设』

1、任何复杂的图形都由更基础的图形削减或增补而来。

2、使用execute可以在任意实体处执行命令。因而实体@e可以确定非绝对值的坐标。下文也称作锚点。
3、一条有限直线可以继续延长。
4、两个平面相交,互相接触的部分是一条直线。
5、以任意点为圆心,任意长为半径,可以画圆。

6、使用fill可以填充方体。
7、使用clone或结构方块可以复制特定区域的方块。
8、使用tp可以移动实体位置,受重力和方向影响。
9、下落的方块(falling_block),下文也称作落沙,可以被@e选择。
10、使用船作为execute的执行实体可以得到更多的方向,而使用盔甲架得到的方向则更为稳定。盔甲架没有垂直朝向,但是小心基岩版的船会遁地。


『公理』

1、本文使用符号表达命令方块设置:

https://img-data.klpbbs.com:11179/forum/202306/09/193025f9jwpb8seqjc8roe.jpg
2、命题中所出现的逻辑已全部写入【定义】和【公设】。
3、拔高题指未完成的假设或存在一些问题的方法。

4、本文所载之方法皆建立在各位读者已熟识execute、fill、clone、tp等命令和结构方块用法的基础上论述。
5、本文不会列出过于复杂,难以在各地图的施工现场使用的方法。纯粹的艺术画图请绕道。
6、本文所载之方法皆非一人一时所作,笔者只是稍加收集整理分类,以方便各位制图所需。


命题一到命题四


【命题一 - 替换方块】

在任意位置替换方块。

设实体A的位置为锚点(公设2),使用fill填充区域内方块。
可以在任意位置替换方块。
execute as @e at @s run fill ~~-1~ ~~-1~ stone

同理可知,使用tp或spreadplayers可以替换区域内随机或特定位置的方块。


【命题二 - 延长线】

求在点上做延长线。

已知某位置存在一个方块。
在该方块位置设实体A为锚点a,设线段延长结束位置为点b(定义3)。
使用tp移动实体A到点b,并同时使用clone复制对应反方向坐标的方块到自己位置,按实体A的移动路径作直线ab(定义4)。

以向上为例:
8 /execute as @e at @s run clone ~~-1~ ~~-1~ ~~~
v /execute as @e at @s run tp @s ~~1~

同理可知,点B可以使用实体B作为锚点。
假设实体A在由点A到点B的移动中,使用了clone复制方块。
则会因为tp的不稳定性导致clone无法正常复制相对位置的方块(公设8)。
所以更为常用的做法是使用fill画线而非clone。

另设点B为目标位置,检测实体A是否存在于该位置。或设记分板倒数指定计分(公理4)。
可以在实体A画完直线AB后停止并自动kill自身。


【命题二拔高 - 曲线】

已知作一条贝塞尔曲线必须计算线段上所有位置的百分比。
所以不可能绕过记分板的计算,做出绘制贝塞尔曲线的命令组。
而使用记分板的计算过于复杂,不适宜在各地图的施工现场使用。
所以只能寻求替代办法(公理5)。



- 直线:
已知一条曲线可以由多条直线拼接而来。

设实体A的位置为曲线终点、设实体B的位置为曲线起点,设实体C在曲线起点。
使用tp以相同速度移动实体B到实体A、移动实体C到实体B后一定位置。并同时让实体C执行fill作曲线ab。
另设曲线终点为目标位置,检测实体B是否存在于该位置。
可以在实体B画完曲线ab后kill实体A,并设实体A1为新的曲线终点,作新的曲线a1a,构成大的线段a1b。

这种情况下作出的曲线仅是圆滑了边角,不是完全意义上的曲线。

- 叠加向量:
设实体A的位置为曲线终点,设实体B的位置为曲线起点,设实体C在任意位置。
使用tp调整实体C的方向,使之朝向实体B,并向后移动。
使用tp调整实体C的方向,使之朝向实体A,并向前移动。
如此重复,作曲线ab。

这种情况下作出的曲线取决于实体C相对于实体A、实体B的位置所能叠加的向量。
因为公设8,校准方向并移动需要两条tp命令。

- 线段比:
设实体A的位置为曲线终点,设实体B的位置为曲线起点,设实体C在任意位置。
使用tp以相同速度移动实体B到实体C、移动实体C到实体A。并同时让实体B执行fill作曲线ab。

这种情况下作出的曲线取决于ac和ab之比。


【命题三 - 线斜面】

按平面坐标系方向作任意斜率斜面。



设实体A的位置为锚点a,设斜面不相邻端某处为点b。
使用tp移动实体A到点b,并同时使用fill填充该平面的宽度(定义6),按实体A的移动路径作平面ab。

以斜率水平向上45°、宽度10为例:
8 /execute as @e at @s run tp @s ^ ^1 ^1
v /execute as @e at @s run fill ^5 ^ ^ ^-5 ^-1 ^ stone

同理可知,点B可以使用实体B作为锚点。
假设实体A在由点a到点b的移动中,使用了实体B作为锚点。
则会因为fill只能填充方体而变成一片片扑克牌叠起来的形状。
所以更为常用的做法是使用clone复制特定区域的方块代替fill(命题九)。


【命题四 - 网斜面】

又,按空间直角坐标系作任意斜率斜面。



设实体A、实体B的位置为锚点a、锚点b,设实体C、实体D的位置为锚点c、锚点d。以锚点c、锚点d的位置为起点,锚点a、锚点b的位置为终点,作虚线ca、虚线db为该平面的不相邻边(定义8)。
实体A、实体B不动。使用tp沿虚线ca、虚线db校准实体C、实体D的方向,使之朝向实体A、实体B。
设实体E在实体C(或实体D)处,使用tp移动实体E到实体D(或实体C),并同时使用fill填充经过的路径,作直线cd为该平面的宽度。
使用tp缓慢移动实体C、实体D到锚点a、锚点b,并同时使用tp移动实体E,使用fill作直线cd1。
如此重复,直至实体C、实体D到达锚点a、锚点b,作斜面abcd。

以使用船充当实体为例(公设10):
8 /execute as @e at @s run tp @s ^^^1 facing @e
v /execute as @e at @s run fill ~1 ~1 ~1 ~-1 ~-1 ~-1 stone
v /execute as @e at @s run tp @e @e
v> /execute as @e at @s run tp @s ^^^1 facing @e
v> /execute as @e at @s run tp @s ^^^1 facing @e

因为公设8,使用tp确定方向会导致画出来的线与理想状态存在偏差。
使用如下命令可以进行一定程度的校准:
execute as @e at @s run tp @s ~ ~ ~



命题五到命题八


【命题五 - 螺旋】

作螺旋上升曲线

设实体A的位置为圆心o,设实体B在任意位置,以实体A到实体B的距离为半径,可以作圆(公设5)。
使用execute作为实体B执行tp环绕实体A,并缓慢上升,使用fill填充方块可作螺旋线ob。

以向内上升为例:
8 /execute as @e at @s run tp ^1 ^0.1 ^ facing @e
v /execute as @e at @s run fill ~ ~ ~ ~ ~ ~ stone

同理可知,使用fill朝向圆心填充,可以作圆锥。


【命题六 - 圆】

已知设实体A的位置为圆心o,使用tp改变实体A的朝向,使用execute让实体A执行fill在朝向的某处填充方块为点b,并以点b到圆心o的距离为半径可以作圆ob(公设5)。

以水平方向、半径10为例:
8 /execute as @e at @s run tp @s ~ ~ ~ ~1 ~
v /execute as @e at @s run fill ^ ^ ^10 ^ ^ ^10 stone

求任意平面作圆。
因为作规整的斜面圆必须用到垂直圆,过于复杂且难以控制方向,不适宜在各地图的施工现场使用。
所以寻求替代办法(公理5)。



设实体A的位置为圆心o,沿任意水平方向的直径设置盔甲架以决定该圆的斜率。
使用fill填充沙子在该区域上,使用execute作为盔甲架给经过相邻位置的落沙添加标签"a"。
使用execute作为实体A选择半径内具有标签"a"的落沙,执行fill填充,作圆o。

以朝x轴方向倾斜,半径5为例:
8 /execute as @e at @s run tag @e add a
v /execute as @e at @s as @e at @s run fill ~ ~ ~ ~ ~ ~ stone
v> /kill @e
v /execute as @e at @s run kill @e


【命题七 - 椭圆】

作平面椭圆。

设实体A的位置为圆心o,设实体B在任意位置,以实体A到实体B的距离为最远端(或最近端)。
使用tp校准实体A和实体B的方向,使实体A朝向实体B,使实体B背向实体A(或朝向实体A)。
使用tp改变实体A和实体B的朝向,以相同速度使实体A做正方向旋转且在朝向某处锁定实体B的位置,并同时使实体B做反方向选择。
使用execute让实体B执行fill在朝向的某处填充方块作椭圆o。

以实体A和实体B的距离为10、椭圆在实体B前距离3为例:
8 /execute as @e at @s run tp @e ^ ^ ^10
v> /execute as @e at @s run tp @s ~ ~ ~ ~-1 ~
v> /execute as @e at @s run tp @s ~ ~ ~ ~1 ~
v /execute as @e at @s run fill ^ ^ ^3 ^ ^ ^3 stone



已知圆柱上的任意斜向切面均为椭圆,求作斜面椭圆。

设实体A的位置为圆心o,设实体B在任意位置,设实体C在圆心o。以任意距离为半径,作圆o。
使用tp改变实体A的朝向,使之缓慢旋转且在朝向某处锁定实体B的位置。
使用tp改变实体A的高度,以与旋转速度相等比例的速度缓慢上升。并同时使用execute让实体B执行fill填充方块。
直至实体B到达斜面椭圆的最高点,使用execute让实体C执行tag给予实体A标签"a",使用tp使之缓慢下降。
直至返回最低点,作斜面椭圆o。

以圆柱半径10,斜率45°即高度10,实体使用盔甲架(公设10)为例:
8 /execute as @e at @s run tp @e ^^^10
v> /execute as @e at @s run tp @s ~ ~ ~ ~1.8 ~
v> /execute as @e at @s run tp @s ~ ~1 ~
v /execute as @e at @s run tp @s ~ ~-1 ~
v /execute as @e at @s run setblock ~ ~ ~ stone
v /execute as @e at @s run tag @e add a
v /execute as @e at @s run tag @e remove a

同理可知,将圆柱换为椭圆,可以作任意大小斜面椭圆。


【命题八 - 球】

已知落沙可以使用目标选择器选择,求作球。

设任意位置为球心o(定义14),使用execute作为落沙执行setblock填充方块,作球o。

以作半径10的空心玻璃球为例:
execute as @e at @s run setblock ~ ~1 ~ glass
变成方块的沙子可以使用fill的replace模式清除:
fill ~ ~ ~ ~ ~ ~ air [] replace sand


【命题八拔高 - 曲面】

已知根据命题三可以作特定方向的平面、根据命题四可以作任意方向的斜面、根据命题八可以作球、根据命题九可以作不规则多面体。
已知根据定义8、定义12、公设4和公设1,可以将一个曲面看作由多个平面组成。且可知将一个任意曲面拆分为规则图形和斜面是最理想的划分。
根据以上条件,求作曲面。



以作中心带有半径5、向上空心半球,宽为10、高度长度不定的曲面为例:

设点b在曲面中心位置,选择半径5的落沙,作半球。
8 /execute as @e at @s run setblock ~ ~1 ~ stone

设实体A沿曲面直径分布,作斜面。
8 /execute as @e at @s run fill ^5 ^-1 ^ ^-5 ^-1 ^ stone

使用斜面拼接、使用笔刷修正。连接半球和斜面,作完整曲面。



命题九


【命题九 - 笔刷】

- 笔刷:
笔刷分为两部分:笔刷控制和笔刷大小。
使用钓鱼竿是制作笔刷的最好选择,钓鱼竿方便携带,随放随收,还有一条线可以指示绘制的位置。
8 /execute as @p at @s run tp @e ^ ^ ^10
v /execute as @e at @s run fill ~1 ~1 ~1 ~-1 ~-1 ~-1 stone

使用多面体作为笔刷样式最为合适,笔刷大小可以根据不同情况随时替换。
使用clone输出可以很快就配置好笔刷,而使用结构方块保存笔刷然后使用structure输出可以免去读取区块的卡顿。

使用clone和结构方块可以轻易复制特定区域。

- 建造顺序:
根据公设1,理论上利用规则的图形可以作出一切图形。

在上述方法中,用命令做出框架是最复杂的。框架有两种制作顺序:
一、定好锚点,连接各点;
二、画出图形,中间镂空。

如上所述,画图的顺序也应当是先定好锚点,确认过路径无误再予以实施。
即定点再放置。

Tantals303 发表于 2023-9-25 02:08:57

可以 很强 很久没看过几何命令帖子了

无机观察者 发表于 2023-9-25 11:20:48

太高级了看不懂[哔哩_笑哭]
页: [1]
查看完整版本: 【命令】常见几何的命令画法汇总