我试图在Matlab中为旋转球体设置动画,但是球体上的光照随之旋转.我反而希望球体旋转,同时照明保持与坐标系固定.这是我的代码当前产生的gif:动画.这是我的代码:
% Simulation Time
dt = 0.05;
time = 0:dt:5;
% Prep Figure
figure('Color',[1 1 1],'Renderer','zbuffer','ColorMap', [1,0,0; 0,0,1])
% Generate Sphere
[X,Y,Z] = sphere(20);
r = 0.75*25.4;
h = surf(r*X,r*Y,r*Z,Z,'FaceColor','interp');
hold on
% Adjust Axes, Lighting, and Shading
axis equal
view([40 25]);
light('Position',[1 1 1])
set(findobj(gca,'type','surface'),...
'FaceLighting','phong',...
'AmbientStrength',.3,'DiffuseStrength',.8,...
'SpecularStrength',.9,'SpecularExponent',25,...
'BackFaceLighting','unlit','EdgeColor','k')
filename = 'Rotation.gif';
for n = 1:36
rotate(h,[0 0 1],10,[0 0 0])
im = frame2im(getframe(1));
[imind,cm] = rgb2ind(im,256);
if n == 1;
imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',dt);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',dt);
end
end
Run Code Online (Sandbox Code Playgroud) 我已经搜索了一些,虽然我可以找到许多有用的网格网格示例,但没有一个清楚地显示如何将我的列表列表中的数据转换为我所看到的各种不同方式的可接受形式。
当谈到 numpy/matplotlib 以及我所看到的术语和步骤序列时,我有点迷茫。
我发现的最接近的是Plotting a 3d surface from a list of tuples in matplotlib
我有一个高度数据列表。
data=[[h1,h2,h3,h...],
[h,h,h,h],
[h,h,h,h],
[h,h,h,h16]]
data[0][1]==h2
data[4][4]==h16
Run Code Online (Sandbox Code Playgroud)
如何使用 matplotlib/numpy 等生成这些值的简单 3d 曲面图?就像颜色值作为 z 值的颜色图一样。我可以很好地使用 imshow() ,因为它直接获取列表列表。我只是不确定我需要如何将我所拥有的东西分割成 plot_surface 可能同意的东西。
我没有找到任何关于此的内容,可能是因为我没有正确的命名法(即我不知道确切地如何要求它),但是无论如何,我都有一个3D numpy数组“ a”。我想识别并绘制a = 0的2D曲面。要弄清楚,数据是双精度浮点,在3D空间上平滑变化。曲面a = 0很有可能会“穿插”在数组的各个点之间,而并不完全恰好位于其中的任何一个点上。所以我需要可以插值的东西来找到a = 0曲面并将其绘制出来。matplotlib是否有现成的例程可以执行此操作?
我在WinJS中有以下代码:
<win-menu id="showAddContentMenu"
anchor="'#showAddContentMenuCommand'">
<win-menu-command label="::'newFolder' | translate"
ng-click="showFileNameFlyout()"
id="newFolderCommand">
</win-menu-command>
<win-menu-command label="::'uploadContent' | translate"
ng-click="uploadFile()">
</win-menu-command>
</win-menu>
<win-flyout id="createFolderNameFlyout"
anchor="'#newFolderCommand'">
<form ng-submit="createNewFolder(addContent.folderName);hideFileNameFlyout();">
<input type="text"
ng-model="addContent.folderName" />
<button class="btn-green"
type="submit"
ng-disabled="addContent.folderName.length === 0"
ng-bind="'create' | translate">
</button>
</form>
</win-flyout>
Run Code Online (Sandbox Code Playgroud)
当我点击New Folder按钮时,它会弹出一个表格,我必须为该文件夹引入一个名称,但如果我在表面上并且我也这样做,并且在我打开屏幕键盘后,输入文本的表单将移动到最佳.
这是showFileNameFlyout功能:
$scope.showFileNameFlyout = function () {
const winControl = document.getElementById('createFolderNameFlyout').winControl;
winControl.show(document.getElementById('showAddContentMenu'), 'left', 'center');
};
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?我想,在我关闭屏幕键盘后,win-flyout元素不能在顶部移动.谢谢!
在我的代码中它不断给我错误:
pygame.surface.Surface.blit(a, (x1, y1))类型错误:描述符“blit”需要“pygame.Surface”对象,但收到“pygame.Rect”。
帮助!
这是我的代码:
import pygame
import time
pygame.init()
screen = pygame.display.set_mode()
display_width = 1366
display_height = 768
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
gameDisplay = pygame.display.set_mode((display_width,display_height))
clock = pygame.time.Clock()
global x1
global y1
global x2
global y2
x1 = 683
y1 = 384
x2 = 0
y2 = 500
def game():
y1 = 384
gameDisplay.fill(white)
a = pygame.draw.rect(gameDisplay, red, (x1,y1,250,250), 0)
b = pygame.draw.rect(gameDisplay, green, (x2,y2,100,100), 0)
pygame.display.update()
gameStart = True
while gameStart …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 python 中创建一座山的表面图,其中我有一些 xyz 数据。最终的结果应该是这个样子的是。该文件的格式如下:
616000.0 90500.0 3096.712
616000.0 90525.0 3123.415
616000.0 90550.0 3158.902
616000.0 90575.0 3182.109
616000.0 90600.0 3192.991
616025.0 90500.0 3082.684
616025.0 90525.0 3116.597
616025.0 90550.0 3149.812
616025.0 90575.0 3177.607
616025.0 90600.0 3191.986
Run Code Online (Sandbox Code Playgroud)
等等。第一列代表x坐标,中间一列代表y坐标,以及z属于xy坐标的高度。
我使用读入数据pandas,然后将列转换为单独的x, y, z NumPy1D 数组。到目前为止,我设法创建了一个简单的 3D 散点图,其中for循环遍历每个 1D 数组的每个索引,但这需要很长时间并且看起来效率很低。
我尝试使用scipy.interpolate.griddataand plt.plot_surface,但对于z数据,我总是得到数据应该在二维数组中的错误,但我无法弄清楚为什么或如何它应该是二维数据。我假设鉴于我有 xyz 数据,应该有一种方法可以简单地从中创建一个表面。有没有简单的方法?
我有一个3D闭合网格汽车对象,其表面由三角形组成.我想计算它的体积,体积中心和惯性张量.
你可以帮帮我吗
问候.乔治
我正在MATLAB中绘制一个R ^ 2到R函数作为曲面图,我从上面进行颜色映射和查看.
surf(X, Y, data);
colormap(jet);
colobar;
view(2);
Run Code Online (Sandbox Code Playgroud)
它产生(带有一些额外的代码)类似的东西
虽然函数的真实性质(为了理解这个问题)可以从以下角度更好地观察:
我想在我的原始情节(从上面看)上绘制一个圆圈.就像是...
然而,我似乎无法实现这一点,因为在绘图上绘制平面内元素使它们出现在xy轴上,我的表面图覆盖了它.例如,打电话
circle_pos = [ +1 +1; -1 -1; -1 +1; +1 -1;]
circle_rad = 0.2 * ones(4,1);
viscircles(circle_pos, circle_rad);
Run Code Online (Sandbox Code Playgroud)
从我的表面绘图后,从顶部查看时没有可见的圆圈.缩放和旋转显示这些圆圈在xy平面上绘制,因此从上方看不见.
如何将我的圆圈绘制在曲面图的顶部,以便从上方可以看到它们?当text在表面上绘图时会出现类似的问题,但是通过在基础函数z值之上指定az位置值来补救.似乎没有任何方法可以指定这些图形元素的z位置.
如何将色阶从默认的紫色更改为黄色?我尝试向 add_trace() 添加颜色和色阶参数,但它引发了错误。
具有默认颜色的可重现代码:
library(plotly); library(reshape2); library(tidyverse)
sleep <- read.table("http://www.statsci.org/data/general/sleep.txt", header=T)
sleep <- na.omit(sleep)
sleep <- mutate(sleep, logTotalSleep = log(TotalSleep))
sleep_mod <- lm(logTotalSleep ~ Gestation + Danger, data=sleep)
# Graph Resolution (more important for more complex shapes)
graph_reso <- 0.5 #0.05
# Setup Axis
axis_x <- seq(min(sleep$Gestation), max(sleep$Gestation), by = graph_reso)
axis_y <- seq(min(sleep$Danger), max(sleep$Danger), by = graph_reso)
# Sample points
sleep_surface <- expand.grid(Gestation = axis_x,
Danger = axis_y,
KEEP.OUT.ATTRS = F)
sleep_surface$TotalSleep <- exp(predict.lm(sleep_mod, newdata = sleep_surface)) # exp …Run Code Online (Sandbox Code Playgroud)