matplotlib 未正确显示 3D 平面的交集 [重复]

2023-11-29

我想绘制两个平面并找到它们的相交线,但我得到这个结果,无法判断它们相交的位置,因为一个平面覆盖另一个平面。

3D 投影应该隐藏平面的不可见部分,我如何使用来获得这个结果绘图库?

planes

你可以清楚地看到这些平原should相交。

plane intersect

这是我用来获得此结果的代码

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

values = range(-10, 11)

def plotPlane(plot, normal, d, values, colorName):
    # x, y, z
    x, y = np.meshgrid(values, values)
    z = (-normal[0] * x - normal[1] * y - d) * 1. / normal[2]

    # draw plot
    plot.plot_surface(x, y, z, color=colorName)

image = plt.figure().gca(projection='3d')

plotPlane(image, [3, 2, -4], 1, values, "red")
plotPlane(image, [5, -1, 2], 4, values, "gray")

plt.show()

Use plotly。您将获得一个交互式绘图,您可以从任何角度对其进行快照。

import numpy as np
import plotly.graph_objects as go
from plotly.subplots import make_subplots
from typing import Tuple, Iterable


def plotPlane(fig: go.Figure,
              normal: Tuple[int, int, int],
              d: int,
              values: Iterable,
              colorScaleName: str) -> None:
    """
        :param fig: figure to plot on
        :param colorScaleName: choose from <https://plotly.com/javascript/colorscales/>
    """
    # x, y, z
    x, y = np.meshgrid(values, values)
    z = (-normal[0] * x - normal[1] * y - d) * 1. / normal[2]

    # draw plane
    surface = go.Surface(x=x, y=y, z=z, colorscale=colorScaleName, showscale=False)
    fig.add_trace(surface, row=1, col=1)


# create figure
fig = make_subplots(rows=1, cols=1, specs=[[{'type': 'surface'}]])
# plot two intersectioned surfaces
values = range(-10, 11)
plotPlane(fig, (3, 2, -4), 1, values, "Hot")
plotPlane(fig, (5, -1, 2), 4, values, "Greys")
fig.show()

我在 jupyter-notebook 中运行它。

enter image description here

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matplotlib 未正确显示 3D 平面的交集 [重复] 的相关文章

随机推荐

  • 如果条件为假,则将单元格留空

    其他问题也涉及到这一点 并提供了对于非常大的数据集不可行的解决方案 我有一个跨 9 列的公式 如下所示 IF A1 A2 B2 zz 然后 我自动填充大约 350 万个单元格 复制 gt 粘贴值 然后我找到 zz 并将其替换为 空单元格 然
  • a=a++ 在 java 中如何工作[重复]

    这个问题在这里已经有答案了 最近我发现了这段Java代码 int a 0 for int i 0 i lt 100 i a a System out println a a 的打印值是 0 但是在 C 的情况下 a 的值是 100 我无法理
  • 使用 TitanDB 进行 UPSERT

    我正在迈出作为 TitanDB 用户的第一步 也就是说 我想知道如何进行更新插入 有条件地在一个顶点中插入一个顶点TitanTransaction 以 获取或创建 的风格 我在要创建 查找的顶点 属性上有一个唯一索引 下面是 Titan 1
  • Android:使图像不透明/透明

    问候 我想将图像放置在表面视图上 不过 我希望图像是透明的 这样您就可以看到图像以及不可见的表面视图 谁能建议我如何做到这一点 这就是我在绘制形状之前的做法 Bitmap buffer Bitmap createBitmap width h
  • Ruby / Rails 字符串数组插入 PostgreSQL

    目前 我有一个 Rails 项目 我正在尝试将活动记录直接传递到 postgres 以便使用字符串数组进行大批量创建 其中值尚不存在 以避免重复 我面临的问题是试图将 ruby 数组中包含 或 等的字符串字符转义为 postgres 可以接
  • git - 远程:致命:你在一个尚未诞生的分支上,使用 post-receive 钩子

    所以我试图将 github 分支同步到我网站的两个部分 理论上是我的 master 分支github应该与我的网站同步微小天气站 com并且 beta 分支应该与beta tinyweatherstation com 并且我已经成功地将 p
  • 如何在 Django Rest Framework 中过滤嵌套序列化器?

    在 Django Rest Framework 中 当序列化程序嵌套在另一个序列化程序中时 如何过滤它 我的过滤器强加在 DRF 视图集中 但是当您从另一个序列化器内部调用序列化器时 嵌套序列化器的视图集永远不会被调用 因此嵌套结果显示为未
  • Solr 太阳黑子minimum_match

    我刚开始使用 Solr Sunspot for Rails 我正在尝试使用
  • Magento - 将 CMS 块添加到一页

    我在 xml 布局文件中有以下代码
  • 反汇编包含大数据或压缩的文件[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 这是我试图弄清楚如何分解 exe 的第四天 仍然没有运
  • Flask/jinja 模板中的 UTC 到本地时区

    我知道以前就有人问过这个问题 但我仍在绞尽脑汁试图弄清楚这个问题 我尝试过 pytz dateutil 现在又尝试了 Flask moment 将 MySQL 表日期时间 即 UTC 转换为在 jinja2 模板中显示为本地时间 特别是 U
  • 无法使 JTextArea 可滚动..!

    这是我的代码 final JTextArea textArea new JTextArea textArea setFont new Font MS UI Gothic Font PLAIN 13 textArea setLineWrap
  • 将静态库链接到 Xcode 4 中的 iOS 项目

    我有一个项目 AQGridView 编译为静态库 但我似乎无法将其添加到我的项目中 将项目拖到我的项目中会创建一个工作区 如果我尝试链接libAQGridView a文件来自DerivedData目录它不会将其识别为库 我不确定我做错了什么
  • (#803) 您请求的某些别名不存在:{education-experience-id} Android

    我正在尝试从 Facebook 获取用户的教育详细信息和工作描述 我登录成功并获得访问令牌 但我无法获得我想要的详细信息 我正在使用的代码 public void getUserExpandEducation new GraphReques
  • Java Applet 线程动画

    我浏览了一些java小程序和动画的代码 我编写了以下代码 import java applet import java awt public class AppletDemo extends Applet implements Runnab
  • 为什么 Google Cloud Tasks 这么慢?

    我将 Google Cloud Tasks 与 AppEngine 结合使用来处理任务 但任务在队列中等待大约 2 3 分钟 然后才会发送到我的 App Engine 端点 任务没有设置 延迟 我希望它们能立即发送 那么问题来了 Cloud
  • 为什么在reduce中使用减法结果不一致?

    鉴于以下情况 val rdd List 1 2 3 我假设rdd reduce x y gt x y 会回来 4 i e 1 2 3 4 但它返回了2 Why 来自 RDD 源代码 以及docs Reduces the elements o
  • 非异步执行路径能否在“异步”方法中返回同步结果

    考虑以下方法 public async Task
  • 为什么 $state.transitionTo 或 $state.go 不显示新的 HTML 部分?

    下面是一段代码 用于在每次 UI 路由器状态更改之前检查用户权限 一切正常 除了当权限正常时 到新状态的转换 使用 state go 如下所示 或使用 state transitionTo 似乎根本没有做任何事情 控制台消息已记录 但仅此而
  • matplotlib 未正确显示 3D 平面的交集 [重复]

    这个问题在这里已经有答案了 我想绘制两个平面并找到它们的相交线 但我得到这个结果 无法判断它们相交的位置 因为一个平面覆盖另一个平面 3D 投影应该隐藏平面的不可见部分 我如何使用来获得这个结果绘图库 你可以清楚地看到这些平原should相