how to generate a dome shape by using defined points
조회 수: 11 (최근 30일)
이전 댓글 표시
Hi all,
i am trying to generate a semi ellipsoidal dome shape by using x, y, z values and below is my code. in the code i defined the x,y,z values but i am unable to assign those values to sphere.
any suggestions and thanks in advance
clc
x = [65 55.2125 50.8267 46.7398 42.9232 39.3476 35.9815 32.7882 29.7175 26.6833 23.4690 18.7605];
y = x;
z = [0.0,0.9,2.7,5.2,8.2,11.8,15.8,20.3,25.2,30.7,37.1,47.5]; % max height of dome is 47.5
[x,y,z] = sphere(20);
x = x(12:end,:);
y = y(12:end,:);
z = z(12:end,:);
r = 65; % radius of the dome
surf(r.*x,r.*y,r.*z);
axis equal;
댓글 수: 0
답변 (1개)
BhaTTa
2024년 6월 14일
To generate a semi-ellipsoidal dome shape using specific x, y, and z values in MATLAB, you'll need to adjust your approach. The sphere function generates a unit sphere, and you're correctly slicing it to get a dome shape, but it seems you want to use predefined x, y, and z values to define an ellipsoidal shape instead.
Given your unique x, y, and z values, it appears you're trying to map these onto a dome shape rather than using the uniform spherical coordinates generated by sphere. To achieve a semi-ellipsoidal dome based on your description, you can use meshgrid to create a grid of x and y values and then calculate the corresponding z values based on the ellipsoidal equation.
However, if your goal is to use the specific z values you've listed with corresponding x and y values to create an ellipsoidal dome, you would typically need a function that represents the dome's shape in terms of z = f(x, y).
If you're looking to create a semi-ellipsoid with predefined dimensions (not necessarily using the x, y, z values you've listed as direct coordinates), you can use the ellipsoid formula:
[ \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1 ]
where a, b, and c are the radii along the x, y, and z axes, respectively. For a dome, you would only plot the upper half of this ellipsoid.
Here's an example code snippet that creates a semi-ellipsoidal dome shape:
clc;
clear;
% Semi-ellipsoid dimensions
a = 65; % semi-major axis in the x-direction
b = 65; % semi-major axis in the y-direction
c = 47.5; % semi-major axis in the z-direction (height of the dome)
% Create a meshgrid for x and y
[x, y] = meshgrid(linspace(-a, a, 50), linspace(-b, b, 50));
% Calculate corresponding z values for the semi-ellipsoid
% Ensure the argument inside the sqrt is non-negative
insideSqrt = 1 - (x.^2/a^2) - (y.^2/b^2);
insideSqrt(insideSqrt < 0) = 0; % Avoid complex numbers by setting negative values to 0
z = c * sqrt(insideSqrt);
% Plot the semi-ellipsoidal dome
surf(x, y, z);
axis equal;
xlabel('X-axis');
ylabel('Y-axis');
zlabel('Z-axis');
title('Semi-Ellipsoidal Dome Shape');
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!