校内建模的一道题,虽然我认为这么trivial的东西前人早就造好轮子了,但是找遍所有能找到的网络资料、文献都没找到答案,只好自己造了个轮子。

设空间曲线

旋转得到的曲面方程为
,则
的方程为:

其中

证明

首先,任取

上一点
,则这一点绕
旋转得到的纬圆
的方程为:

因为

点的取法对
不失一般性,因此,当
点在
移动时,产生的全体纬圆扫过的全空间即为

因此

可以写为:

将③④⑤代入②:

可以反解出

为了形式简洁起见,令

,则

其中如果

是直线,那么
是一次函数,总有反函数。

如果

不是直线,那么在每一段单调区间内分别求反函数。(或者通过一些消元技巧绕开反函数)

再将

代入①式:

其中

证毕

一个引理都没用到的证明,就不给例子了,回头赶作业了,困死了。


来自半年后的更新——

新增MATLAB代码实现交互式输入:

注意,本代码仅支持直线绕直线旋转!!!

曲线绕直线旋转写代码太麻烦了,而且反函数不一定单值,处理起来很麻烦。

代码如下——

%先输入为被旋转曲线的参数方程
%再输入转轴的标准方程
close all;clear all;clc;
disp('请输入首先被旋转曲线'); %输入提示信息
prompt1='请输入x=f(t),例如x=2t+3,则输入数组[2 3]nx=';
f=input(prompt1);
prompt2='请输入y=g(t),例如y=4t+5,则输入数组[4 5]ny=';
g=input(prompt2);
prompt3='请输入z=h(t),例如y=6t+7,则输入数组[6 7]nz=';
h=input(prompt3);
disp(['您的被旋转曲线方程是:']);
disp(['x=(' num2str(f(1)) ')×t+(' num2str(f(2)) ')']);
disp(['y=(' num2str(g(1)) ')×t+(' num2str(g(2)) ')']);
disp(['z=(' num2str(h(1)) ')×t+(' num2str(h(2)) ')']);
disp('请输入首先旋转轴的直线标准方程:(x-x0)/m=(y-y0)/n=(z-z0)/p'); %输入提示信息
prompt4='请输入数组[m n p]n[m n p]=';
mnp=input(prompt4);
prompt5='请输入数组[x0 y0 z0]n[x0 y0 z0]=';
xyz=input(prompt5);
disp(['您的旋转轴直线方程是:']);
disp(['(x-(' num2str(xyz(1)) '))/(' num2str(mnp(1)) ')=']);
fprintf("%c",8) %删掉换行符号
disp(['(y-(' num2str(xyz(2)) '))/(' num2str(mnp(2)) ')=']);
fprintf("%c",8) %删掉换行符号
disp(['(z-(' num2str(xyz(3)) '))/(' num2str(mnp(3)) ')']);
F=[mnp(1)*f(1)+mnp(2)*g(1)+mnp(3)*h(1),mnp(2)*f(2)+mnp(2)*g(2)+mnp(3)*h(2)];
disp(['F=(' num2str(F(1)) ')t+(' num2str(F(2)) ')']) %调试用
if(F(1)==0)disp(['两直线垂直,方程退化,不予输出']);return;
end
F_1=[1/F(1) -F(2)/F(1)]; %F的逆为(1/a)t+(-b/a)
disp(['F^(-1)=(' num2str(F_1(1)) ')t+(' num2str(F_1(2)) ')']) %调试用
syms x y z;
F_1u=F_1(1)*(mnp(1)*x+mnp(2)*y+mnp(3)*z); %F^(-1)(mx+ny+pz)
Gamma=(x-xyz(1))^2+(y-xyz(2))^2+(z-xyz(3))^2 ...
-(f(1)*F_1u+f(2)-xyz(1))^2-(g(1)*F_1u+g(2)-xyz(2))^2-(h(1)*F_1u+h(2)-xyz(3))^2;
Gamma=expand(Gamma);
disp(['旋转曲面方程为:' char(Gamma) '=0']);
prompt6='请输入绘图区域[x0 x1 y0 y1 z0 z1],如输入0,则为默认区间n';
plotrange=input(prompt6);
if length(plotrange)==6fimplicit3(Gamma,plotrange); %绘图
elsefimplicit3(Gamma); %绘图
end
xlabel('x');
ylabel('y');

测试输入1:

%测试样例1:圆锥
[1 0]
[0 0]
[1 0]
[0 0 1]
[0 0 0]
0

用户交互界面如下:

绘图效果如下:

吐槽,这图片看着像个圣杯

测试样例2:

%测试样例2:奇怪的图形
[2 3]
[4 5]
[6 7]
[1 2 3]
[4 5 6]
[-15 15 -15 15 0 20]

用户交互界面如下:

不愧为用脚敲的数据

绘图效果如下:

还莫名地可以,像个斜着的碗

好了,去赶电磁学作业了。为啥网页上写的4月2日提交,截止日期设置的4月8日。今天4月4日才发现,哭了。

曲线绕x轴旋转曲面方程_空间曲线绕空间直线旋转生成的旋转曲面方程相关推荐

  1. matlab将图片旋转的代码_空间曲线绕空间直线旋转生成的旋转曲面方程

    校内建模的一道题,虽然我认为这么trivial的东西前人早就造好轮子了,但是找遍所有能找到的网络资料.文献都没找到答案,只好自己造了个轮子. 设空间曲线 : 绕 : 旋转得到的曲面方程为 ,则 的方程 ...

  2. 曲线绕x轴旋转曲面方程_几何代数50 ----柱面及其方程

    回顾:圆柱面 圆柱面可以视为到一定直线的距离等于常数的动点的轨迹. 圆柱面也可以视为动直线绕一条平行的定直线旋转所得的旋转曲面. 圆柱面也可以视为动直线在圆周C上平行移动得到的曲面. 图一 1.柱面的 ...

  3. 三维空间中曲线绕任意轴旋转所得的旋转曲面求法

    三维空间中曲线绕任意轴旋转所得的旋转曲面求法 对2023汤家凤考研高等数学讲义225页2.三维空间直线旋转曲面的解释和推广 ©️ sylvanding

  4. matlab线旋转成面,用matlab怎么绘制一条曲线绕z轴旋转生成的曲面?

    用matlab怎么绘制一条曲线绕z轴旋转生成的曲面? 已知数据如下: x z y -398.10815554637100 391.8559758318630 690.066133543041 -381 ...

  5. android 动画x轴旋转,Android Roate3dAnimation实现围绕y轴竖直方向或者绕x轴方向旋转的3d动画效果...

    概要: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Roate3dAnim ...

  6. 曲线绕x轴旋转曲面方程_曲线C绕y轴旋转所成的旋转曲面的方程为.PPT

    曲线C绕y轴旋转所成的旋转曲面的方程为 曲面之柱面.旋转面.椭球面 欧阳顺湘 北京师范大学 Recall 曲面方程(Equations for a Surface): 更多曲面 柱 面 旋转面 椭球面 ...

  7. 曲线绕x轴旋转曲面方程_绕x轴旋转(微积分旋转体绕y轴旋转体积~我看不懂图片上的公式~...)...

    关于空间曲线(参数方程)绕x轴旋转得到的曲面方程 绕哪个轴旋转,那个坐标不变,另一个的平方变,坐标的平方和绕轴旋转. 由一些在指定的集的数,称为参数或自变量,以决定因变量的结果.例如在运动学,参数通常 ...

  8. 曲线绕x轴旋转曲面方程_曲线绕着Ox轴旋转所得的曲面方程是______。

    曲线绕着Ox轴旋转所得的曲面方程是______. 更多相关问题 [单选] 清明是民间祭奠亡者的重要时候.在这个节日里,人们会不约而同地云集在骨灰寄存处,进行祭祀活动.清明烧纸是最普遍的民俗,也是()的 ...

  9. matlab 定义一个有自变量的方程_常微分方程:(第四章) 高阶微分方程

    参考<常微分方程>第三版(王高雄) 常微分方程王高雄 第四章 高阶微分方程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com 对于高阶微分方程,线性部分 ...

最新文章

  1. 已知环境静态障碍物避障_我女儿如何教我无障碍环境
  2. [No000016D]把知识种进脑子:像读教材一样读书
  3. LiveVideoStackCon 2018 注册通道即将关闭
  4. oFono安装和启动
  5. 轮廓检测_轮廓检测| Richer Convolutional Features | CVPR | 2017
  6. 从pg_hba.conf文件谈谈postgresql的连接认证
  7. 【python基础知识】Tkinter基础
  8. python在哪里写代码-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...
  9. Atitti 存储引擎支持的国内点与特性attilax总结
  10. javweb音乐网站_基于javaweb音乐网站设计与实现
  11. vs2003转为vs2010的问题
  12. 随机划分训练集和测试集
  13. 计算机无法进去系统,电脑开机后进不了系统的解决方法步骤图
  14. css怎样 锚定位,CSS:如何定位内部锚
  15. 重要短信通知解决方案(短信通知+语音播报自动双呼)
  16. 【实用代码】选项卡切换——带标题底纹样式
  17. python实用小工具
  18. GCSE英语语言考试-角色定位
  19. oracle中表结果对比,ORACLE 两个表或两个结果集的数据对比常用的函数
  20. CMake 使用方法 http://www.cnblogs.com/lyq105/archive/2010/12/03/1895067.html

热门文章

  1. springMVC参数的传递方式(1.通过@PathVariabl获取路径参数,2.@ModelAttribute获取数据,3.HttpServletRequest取参,4@RequestParam)
  2. 表的插入、更新、删除、合并操作_21_合并表中数据
  3. 表的插入、更新、删除、合并操作_6_通过多表关联插入
  4. 关于__init、__initdata和__exit、__exitdata的学习笔记
  5. OpenCV中图像水平拼接函数hconcat的使用
  6. matlab中.P文件的使用说明
  7. 算法简介、7种算法分类
  8. Unity C#基础之 反射反射,程序员的快乐
  9. CCNA--OSI、TCP/IP
  10. apache日志记录格式LogFormat参数说明