我一直在做一个个人项目,目的是生成满足方程x^2 + y^2 + z^2 = S的整数解的图像,其中'S'是任意整数。
换句话说,我正在寻找所有3D点[x,y,z],其中x,y和z都是完全平方整数,且x + y + z = S。
例如,S = 2809将具有以下解:
[144,1296,1369], [144,729,1936], [0,0,2809] ...以及上述所有排列(即144 + 729 + 1936 = 1936 + 729 + 144)
在我提出问题之前,这里有一个小的离题讨论,以便更好地理解:
通用方程x + y + z = S的所有解将位于由以下2D平面定义的区域中:
A = [S,0,0] B = [0,S,0] C = [0,0,S]
这是一个关于 x + y + z = 50 的所有解(不仅是正方形点)的图表,以说明此方程的所有解都位于上述定义的 ABC 所界定的同一平面上。请注意,下面三角形的顶点为:[50, 0, 0]、[0, 50, 0] 和 [0, 0, 50]。 回到我的问题: 在找到正方形解决方案点之后,我希望将3D解决方案点转换为基于ABC平面的2D坐标,其中A为(0,0),B为最大的“x”值,C为最大的“y”值。然后,我希望将这些解决方案输出到图像文件中。
我的线性代数知识很少,我一直无法找到一种方法来将3D坐标转换为基于3个非共线点的2D平面坐标。
我的代码目前是用Python编写的,但算法/数学答案同样好!
非常感谢任何帮助!
换句话说,我正在寻找所有3D点[x,y,z],其中x,y和z都是完全平方整数,且x + y + z = S。
例如,S = 2809将具有以下解:
[144,1296,1369], [144,729,1936], [0,0,2809] ...以及上述所有排列(即144 + 729 + 1936 = 1936 + 729 + 144)
在我提出问题之前,这里有一个小的离题讨论,以便更好地理解:
通用方程x + y + z = S的所有解将位于由以下2D平面定义的区域中:
A = [S,0,0] B = [0,S,0] C = [0,0,S]
这是一个关于 x + y + z = 50 的所有解(不仅是正方形点)的图表,以说明此方程的所有解都位于上述定义的 ABC 所界定的同一平面上。请注意,下面三角形的顶点为:[50, 0, 0]、[0, 50, 0] 和 [0, 0, 50]。 回到我的问题: 在找到正方形解决方案点之后,我希望将3D解决方案点转换为基于ABC平面的2D坐标,其中A为(0,0),B为最大的“x”值,C为最大的“y”值。然后,我希望将这些解决方案输出到图像文件中。
我的线性代数知识很少,我一直无法找到一种方法来将3D坐标转换为基于3个非共线点的2D平面坐标。
我的代码目前是用Python编写的,但算法/数学答案同样好!
非常感谢任何帮助!