查看“︁OpenSCAD用户手册/数学运算符”︁的源代码
←
OpenSCAD用户手册/数学运算符
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
__NOTOC__ {{incomplete}} === 标量算术运算符 === 标量算术运算符以数值为操作数,并计算出一个新的数值。 {| class="wikitable" |+ |加法 |- |- |减法 |- |* |乘法 |- |/ |除法 |- |% |取模 |} "-"也可以充当前缀操作符,表示对目标数值取反。 === 关系运算符 === 关系运算符根据参与计算的两个操作数得到一个布尔值。 {| class="wikitable" |< |小于 |- |<= |小于等于 |- |== |相等 |- |!= |不相等 |- |>= |大于等于 |- |> |大于 |} 如果操作数皆为简单的数值,那么其意义是不言自明的。 如果操作数皆为字符串,则根据字母顺序来确定相等或次序。例如,"ab" > "aa" > "a"。 如果操作数皆为布尔值,''true'' > ''false''。在一个布尔值与一个数值进行比较时,将''true''视作1,并将''false''视作0。对于其他类型与布尔值进行不等式测试时,返回false。 如果操作数皆为向量,则二者相同时返回''true'',否则返回''false''。当不等式测试的操作数中有一个或两个向量时,总是返回''false''因此,如[1] < [2]亦返回''false''。 用'==' 与 '!='来测试不同的类型,则总是返回不相等。 不同类型之间进行不等式比较时,除了上述布尔值与数值以外,将总是得到''false''。 请注意,[1]与1是两种截然不同的类型,因此[1] == 1为false。 除了''undef''以外,''undef''不等于其他任意值。含有''undef''的不等式比较将总是得到''false''。 ''nan''不等于其他任意值(甚至不等于其自身),且不等式测试恒为''false''。请参见[[OpenSCAD用户手册/综述#数|数]]. === 逻辑运算符 === 所有的逻辑运算符取布尔值作为操作数并计算出一个布尔值。非布尔类型的量值在由逻辑运算符计算前先被转换为布尔值。 {| class="wikitable" |&& | 逻辑与 |- ||| | 逻辑或 |- |! | 一元逻辑非 |- |} 由于<code>[false]</code>为<code>true</code>, 因此<code>false || [false]</code>的结果亦为<code>true</code>. 请注意,逻辑运算符与关系运算符处理向量的区别: <code>[1, 1] > [0, 2]</code> 为 <code>false</code>, 但是 <code>[false, false] && [false, false]</code> 为 <code>true</code>. === 条件运算符 === <tt>?:</tt>运算符可用于根据条件对两个表达式之一进行求值。它的工作方式脱胎于类C编程语言系。 {| class="wikitable" | ? : |条件运算符 |} {| width="75%" |'''用例:''' |- | <syntaxhighlight lang="javascript"> a=1; b=2; c= a==b ? 4 : 5; </syntaxhighlight> 如果a等于b, 便将c设置为4, 否则将c设置为5。 <br> "a==b"部分必须要计算出一个布尔值。 |} === 向量数运算符 === 向量数(vector-number)运算符取一个向量与一个数来计算出一个新向量。 {| class="wikitable" |* |令所有的向量元素与该数进行乘法运算 |- |/ |令所有的向量元素与该数进行除法运算 |} : '''示例''' L = [1, [2, [3, "a"] ] ]; echo(5*L); // ECHO: [5, [10, [15, undef]]] === 向量运算符 === 向量运算符取两个向量作为操作数来计算出一个新向量。 {| class="wikitable" |+ |两个向量中对应元素相加 |- |- |两个向量中对应元素相减 |} "-"也可用作前置运算符,令向量中的每个元素逐一取反。 : '''示例''' L1 = [1, [2, [3, "a"] ] ]; L2 = [1, [2, 3] ]; echo(L1+L1); // ECHO: [2, [4, [6, undef]]] echo(L1+L2); // ECHO: [2, [4, undef]] === 向量点积运算符 === 如果参与乘法运算的两个操作数都为简单向量,则根据[[w:Dot_product|点积]]的线性代数规则,计算结果为一个数。 <code>c = u*v;</code>的计算过程为<math>c = \sum u_iv_i</math>。如果操作数的大小不匹配,则计算结果为<code>undef</code>。 {{BookCat}} === 矩阵乘法 === 如果参与乘法运算的两个操作数中存在矩阵,则根据[[w:Matrix_multiplication#Matrix_product_.28two_matrices.29|矩阵乘积]]的线性代数规则,计算结果为一个简单向量或一个矩阵。在接下来的讨论中,我们设 {{math|A, B, C...}}为矩阵,{{math|u, v, w...}}为向量。下标{{math|i, j}}表示元素的索引。 对于规模为{{math|n × m}}的矩阵{{math|A}}与规模为{{math|m × p}}的矩阵{{math|B}}而言,二者之积<code>C = A*B;</code>为一个{{math|n × p}}矩阵,其中的元素依次为 <math>C_{ij} = \sum_{k=0}^{m-1} A_{ik}B_{kj}</math>。 而<code>C = B*A;</code>的结果为<code>undef</code>,除非{{math|n}} = {{math|p}}。 对于规模为{{math|n × m}}的矩阵{{math|A}}与规模为{{math|m}}的向量{{math|v}}而言,二者之积<code>u = A*v;</code>为一个规模为{{math|n}}的向量,其中的元素依次为 <math>u_{i} = \sum_{k=0}^{m-1} A_{ik}v_{k}</math>。 在线性代数中,此为[[w:Matrix_multiplication#Square_matrix_and_column_vector|矩阵与列向量的乘积]]. 对于规模为{{math|n}}的向量{{math|v}}与规模为{{math|n × m}}的矩阵{{math|A}}而言,二者之积<code>u = v*A;</code>为一个规模为{{math|m}}的向量,其中的元素以此为 <math>u_{j} = \sum_{k=0}^{n-1} v_{k}A_{kj}</math>. 在线性代数中,此为行向量与矩阵的乘积。 矩阵的乘法运算并不满足交换律,即:<math>AB \neq BA</math>, <math>Av \neq vA</math>。 {{BookCat}}
该页面使用的模板:
Template:BookCat
(
查看源代码
)
Template:Incomplete
(
查看源代码
)
Template:Math
(
查看源代码
)
返回
OpenSCAD用户手册/数学运算符
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息