打卡3

4.

#include<iostream>

using namespace std;

class CRectangle

{

 private:

  double h,w;

  public:

   CRectangle(double h=1,double w=1):h(h),w(w)

   {

   

   }

   void input()

   {

    cin>>h>>w;

    if(h<0||h>50)

    h=1.0;

    if(w<0||w>50)

    w=1.0;

   }

   void Perimeter()

   {

    cout<<(h+w)*2;

   }

  

};

int main()

   {

    CRectangle A;

    A.input();

    A.Perimeter();

    return 0;

   }

 

bool CalNormalVector(double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3,double &dx,double &dy,double &dz)
{
double pt1pt2[3]={x2-x1,y2-y1,z2-z1};
double pt2pt3[3]={x3-x2,y3-y2,z3-z2};
double pt1pt3[3]={x3-x1,y3-y1,z3-z1};
double nx=0.0,ny=0.0,nz=0.0f;
cross(pt1pt2[0],pt1pt2[1],pt1pt2[2],pt2pt3[0],pt2pt3[1],pt2pt3[2],nx,ny,nz);
if (nx>-MYFLOAT0&&nx<MYFLOAT0&&
ny>-MYFLOAT0&&ny<MYFLOAT0&&
nz>-MYFLOAT0&&nz<MYFLOAT0)
{
return false;
}
//
bool flag=normalize(nx,ny,nz,dx,dy,dz);
if (!flag)
{
return false;
}
//测试,三向量与法向量数量积都是0
double dot1n1=dot(dx,dy,dz,pt1pt2[0],pt1pt2[1],pt1pt2[2]);
double dot2n1=dot(dx,dy,dz,pt2pt3[0],pt2pt3[1],pt2pt3[2]);
double dot3n1=dot(dx,dy,dz,pt1pt3[0],pt1pt3[1],pt1pt3[2]);
if (!(dot1n1>-MYFLOAT0&&dot1n1<MYFLOAT0&&
dot2n1>-MYFLOAT0&&dot2n1<MYFLOAT0&&
dot2n1>-MYFLOAT0&&dot2n1<MYFLOAT0))
{
return false;
}
return true;
}

posted @   vvvcutee  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示