吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
楼主: 楠思豆

[求助] [已解决]xy多项式拟合自由曲面

[复制链接]
  • TA的每日心情
    奋斗
    2025-3-29 12:33
  • 签到天数: 375 天

    [LV.9]以坛为家II

    68

    主题

    253

    回帖

    11

    积分

    小白

    积分
    11
    发表于 2024-5-21 16:41 | 显示全部楼层

    前辈您好,可以提供一下代码吗,想学习一下
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-9-12 08:52
  • 签到天数: 122 天

    [LV.7]常住居民III

    2

    主题

    11

    回帖

    1

    积分

    小白

    积分
    1
    发表于 2024-6-19 17:24 | 显示全部楼层
    你好,请问下我拟合的时候,提示我“模型函数计算出现复数值”,但是我输入的多项式公式跟你一模一样,你是怎么解决的?
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-9-12 08:52
  • 签到天数: 122 天

    [LV.7]常住居民III

    2

    主题

    11

    回帖

    1

    积分

    小白

    积分
    1
    发表于 2024-6-19 17:30 | 显示全部楼层
    楠思豆 发表于 2023-9-15 16:19
    谢谢,这个问题我解决了,把拟合出来的坐标点Y和Z减去主光线的Y和Z,把全局坐标改为局部坐标,相当于平移 ...

    你好,麻烦问下,用xy多项式拟合自由曲面的过程中,我跟你的操作是一样的,多项式表达式也跟你一模一样,但是matlab提示“模型函数计算出现复数值”,没办法模拟出来,请问这个是怎么解决的?
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-11-1 20:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    1

    主题

    3

    回帖

    0

    积分

    小白

    积分
    0
    发表于 2024-8-1 22:01 | 显示全部楼层
    请问这是用的matlab里面的什么工具箱?我找到sftool工具箱,界面和你这个不一样。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-3-9 19:48
  • 签到天数: 54 天

    [LV.5]常住居民I

    4

    主题

    21

    回帖

    0

    积分

    小白

    积分
    0
     楼主| 发表于 2025-3-8 13:47 | 显示全部楼层
    baojianing 发表于 2024-5-21 16:41
    前辈您好,可以提供一下代码吗,想学习一下

    clc;
    clear;

    S=[-20 -20 0];            %初始化物面第一个点坐标   
    P1=[-20 -20 200];         %初始化拟合面第一个点坐标
    L1=[0 140 540];           %初始化像点坐标
    I1=(P1-S)/norm(P1-S);     %入射光线方向矢量
    O11=(L1-P1)/norm(L1-P1);  %出射光线方向矢量
    O1=-O11;                  %离轴反射取反方向出射矢量
    N1=(O1-I1)/norm(O1-I1);      %拟合点单位法向矢量
    r1=(P1-S)/norm(P1-S);     %入射光线方向矢量

    P2=[-30 -100 30];         %初始化拟合面第一个点坐标
    L2=[0 -10 -690];          %初始化像点坐标
    I2=O1;                    %入射光线方向矢量
    O12=(L2-P2)/norm(L2-P2);  %出射光线方向矢量
    O2=-O12;                  %离轴反射取反方向出射矢量
    N2=(O2-I2)/norm(O2-I2);   %拟合点单位法向矢量

    P3=[-35 -115 150];         %初始化拟合面第一个点坐标
    L3=[0 935 -340];          %初始化像点坐标
    I3=O2;                    %入射光线方向矢量
    O13=(L3-P3)/norm(L3-P3);  %出射光线方向矢量
    O3=O13;                  %离轴反射取反方向出射矢量
    N3=(O3-I3)/norm(O3-I3);   %拟合点单位法向矢量

    P4=[-30 35 80];         %初始化拟合面第一个点坐标
    L4=[0 -130 100];          %初始化像点坐标
    I4=O3;                    %入射光线方向矢量
    O14=(L4-P4)/norm(L4-P4);  %出射光线方向矢量
    O4=O14;                  %离轴反射取反方向出射矢量
    N4=(O4-I4)/norm(O4-I4);   %拟合点单位法向矢量

    PX1=zeros(1681,1);       %生成一个矩阵储存X坐标
    PY1=zeros(1681,1);       %储存Y坐标
    PZ1=zeros(1681,1);       %储存Z坐标
    PD1=zeros(1,3);          %储存拟合点P坐标

    PX2=zeros(1681,1);       %生成一个矩阵储存X坐标
    PY2=zeros(1681,1);       %储存Y坐标
    PZ2=zeros(1681,1);       %储存Z坐标
    PD2=zeros(1,3);          %储存拟合点P坐标

    PX3=zeros(1681,1);       %生成一个矩阵储存X坐标
    PY3=zeros(1681,1);       %储存Y坐标
    PZ3=zeros(1681,1);       %储存Z坐标
    PD3=zeros(1,3);          %储存拟合点P坐标

    PX4=zeros(1681,1);       %生成一个矩阵储存X坐标
    PY4=zeros(1681,1);       %储存Y坐标
    PZ4=zeros(1681,1);       %储存Z坐标
    PD4=zeros(1,3);          %储存拟合点P坐标

    m=1;
    %循环物面坐标求出拟合点坐标,X=-100,Y从-20到20,Z从200到160,
    % 相邻数据点间隔1mm,总采样光线41*41=1681条
    for i=0:1:40
        for j=0:1:40
            S=[-20+j -20+i 0];
            P10=S+dot(N1,P1-S)/dot(N1,r1)*r1;%更新拟合点P坐标
            PD1(:,:,m)=P10;     %储存P点坐标
            PX1(m)=P10(1,1);    %储存X点坐标
            PY1(m)=P10(1,2);    %储存Y点坐标
            PZ1(m)=P10(1,3)-195.5327;    %储存Z点坐标
            disp(P10);
            disp(S);
           % disp(PX);
            %disp(PY);
            %disp(PZ);
            I1=(P10-S)/norm(P10-S);
            O11=(L1-P10)/norm(L1-P10);
            O1=-O11;
            N1=(O1-I1)/norm(O1-I1);
            P1=P10;
            
            P20=P10+dot(N2,P2-P10)/dot(N2,O1)*O1;%更新拟合点P坐标
            PD2(:,:,m)=P20;     %储存P点坐标
            PX2(m)=P20(1,1);    %储存X点坐标
            PY2(m)=P20(1,2)+69.2628;    %储存Y点坐标
            PZ2(m)=P20(1,3)-25.1127;    %储存Z点坐标
            disp(P20);
            %disp(PX);
            %disp(PY);
            %disp(PZ);
            %I2=(P20-P10)/norm(P20-P10);
            I2=O1;
            O12=(L2-P20)/norm(L2-P20);
            O2=-O12;
            N2=(O2-I2)/norm(O2-I2);
            P2=P20;

            P30=P20+dot(N3,P3-P20)/dot(N3,O2)*O2;%更新拟合点P坐标
            PD3(:,:,m)=P30;     %储存P点坐标
            PX3(m)=P30(1,1);    %储存X点坐标
            PY3(m)=P30(1,2)+81.6218;    %储存Y点坐标
            PZ3(m)=P30(1,3)-174.2462;    %储存Z点坐标
            disp(P30);
            %disp(PX);
            %disp(PY);
            %disp(PZ);
            %I3=(P30-P20)/norm(P30-P20);
            I3=O2;
            O13=(L3-P30)/norm(L3-P30);
            O3=O13;
            N3=(O3-I3)/norm(O3-I3);
            P3=P30;

            P40=P30+dot(N4,P4-P30)/dot(N4,O3)*O3;%更新拟合点P坐标
            PD4(:,:,m)=P40;     %储存P点坐标
            PX4(m)=P40(1,1);    %储存X点坐标
            PY4(m)=P40(1,2)-43.7302;    %储存Y点坐标
            PZ4(m)=P40(1,3)-110.8384;    %储存Z点坐标
            disp(P40);
            %disp(PX);
            %disp(PY);
            %disp(PZ);
            %I4=(P40-P30)/norm(P40-P30);
            I4=O3;
            O14=(L4-P40)/norm(L4-P40);
            O4=O14;
            N4=(O4-I4)/norm(O4-I4);
            P4=P40;


            m=m+1;

            if (m>41)

            P1=PD1(:,:,m-41);    %使下一列第一个拟合点为与上一列第一个拟合点切平面交点
      
            P2=PD2(:,:,m-41);    %使下一列第一个拟合点为与上一列第一个拟合点切平面交点
       
            P3=PD3(:,:,m-41);    %使下一列第一个拟合点为与上一列第一个拟合点切平面交点
       
            P4=PD4(:,:,m-41);    %使下一列第一个拟合点为与上一列第一个拟合点切平面交点
            end

        end

       
    end


    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-3-9 19:48
  • 签到天数: 54 天

    [LV.5]常住居民I

    4

    主题

    21

    回帖

    0

    积分

    小白

    积分
    0
     楼主| 发表于 2025-3-8 13:48 | 显示全部楼层
    yijihuaxiang 发表于 2024-6-19 17:30
    你好,麻烦问下,用xy多项式拟合自由曲面的过程中,我跟你的操作是一样的,多项式表达式也跟你一模一样, ...

    限制一下范围就可以了
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-3-9 19:48
  • 签到天数: 54 天

    [LV.5]常住居民I

    4

    主题

    21

    回帖

    0

    积分

    小白

    积分
    0
     楼主| 发表于 2025-3-8 13:59 | 显示全部楼层
    jiaojiao888 发表于 2024-8-1 22:01
    请问这是用的matlab里面的什么工具箱?我找到sftool工具箱,界面和你这个不一样。 ...


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2025-3-29 13:44 , Processed in 0.125000 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表