(一二三)向量座標計算

2021-09-23 22:52:17 字數 3006 閱讀 8789

乙個類,包含極座標和直角座標。

兩個這樣的類物件,通過運算子過載,可以直接相加/

相減,並得出乙個新的座標,而這個新座標,是原來兩個物件的向量相加的結果。

**如下:

包含類定義

#pragma once

class point

; //常量

private:

double x; //x,y座標

double y;

double jiaodu; //極座標:角度和長度

double changdu;

int mode; //模式,根據模式來決定座標輸出時的形式

void setxy(); //設定x、y座標(根據極座標)

void setji(); //設定極座標(根據x,y座標)

public:

void cm(int b = 2); //模式轉換,預設引數為2(切模式),也可以給引數,改變轉換情況

point(double a = 0, double b = 0, int c = xy); //預設建構函式。預設為x,y座標賦值

void reset(double a = 0, double b = 0, int c = xy); //重置座標

void show()const; //輸出座標

point operator+(const point& m)const; //運算子+過載,不用引用是因為要建立乙個新物件,然後返回這個物件

point operator+(double m)const; //再次過載,面對物件是乙個double值,直接加在x和y座標上

point operator-(const point& m)const; //運算子-過載,

point operator*(const double m)const; //運算子*過載,

point operator/(const double m)const; //運算子/過載,

friend std::ostream& operator<<(std::ostream &os, const point&m); //用於cout或其他輸出

}; 包含了point類的成員函式以及友元函式定義

#include#include#include"point.h"

void point::setxy() //設定x、y座標(根據極座標),函式內容是拿以前的改改

void point::setji() //設定極座標(根據x,y座標)

void point::cm(int b)

else if (b == ji)mode = ji;

else if (b == xy)mode = xy;

else std::cout << "引數輸出錯誤,輸出模式轉換失敗。" << std::endl;

}point::point(double a, double b, int c)

else if (c == ji)

else std::cout << "引數輸入錯誤。如果你需要輸入x、y座標,請第三個引數輸出0或者不輸入第三個引數;如果你需要輸入極座標,請第三個引數輸入1。" << std::endl;

}void point::reset(double a, double b, int c)

else if (c == ji)

else std::cout << "引數輸入錯誤。如果你需要輸入x、y座標,請第三個引數輸出0或者不輸入第三個引數;如果你需要輸入極座標,請第三個引數輸入1。" << std::endl;

}void point::show()const //輸出座標

else if (mode == ji) }

point point::operator+(const point& m)const //運算子+過載,不用引用是因為要建立乙個新物件,然後返回這個物件

point point::operator+(double m)const

point point::operator-(const point& m)const //運算子-過載,

point point::operator*(const double m)const //運算子*過載,

point point::operator/(const double m)const //運算子/過載,

std::ostream& operator<<(std::ostream &os, const point&m)

main()函式所在,用於使用和驗證類

#include#include"point.h"

int main()

顯示:

現在報告x,y座標:

x:0,y:0

現在報告x,y座標:

x:3,y:4

現在報告極座標:

長度為:5,角度為:4度

將c以x,y座標顯示:

現在報告x,y座標:

x:4.98782,y:0.348782

將b以極座標顯示:

現在報告極座標:

長度為:5,角度為:53.1301度

a+3=現在報告x,y座標:

x:3,y:3

a-2=現在報告x,y座標:

x:-2,y:0

b+c=現在報告極座標:

長度為:9.0949,角度為:28.5651度

b-c=現在報告極座標:

長度為:4.15726,角度為:118.565度

b*2=現在報告極座標:

長度為:10,角度為:53.1301度

b/2=現在報告極座標:

長度為:2.5,角度為:53.1301度

請按任意鍵繼續. . .

總結:① - 

運算子除了表示減法(例如

a-b),也可以表示負號(例如 

-a)。因此,過載負號運算子時,可以作為成員函式,且無需使用引數(隱式的呼叫類物件自己)。

② 關於更多應用——隨機漫步問題,可以看書,或者後面的複習題也有。

(一二三)向量座標計算

乙個類,包含極座標和直角座標。兩個這樣的類物件,通過運算子過載,可以直接相加 相減,並得出乙個新的座標,而這個新座標,是原來兩個物件的向量相加的結果。如下 包含類定義 pragma once class point 常量 private double x x,y座標 double y double ...

python計算一 二 三階顏色矩

path為需要讀取的路徑 img image.open path m,n img.size r,g,b img.split rd np.asarray r gd np.asarray g bd np.asarray b return rd,gd,bd 分別計算一二三階顏色矩 r通道的一階顏色矩 rd...

實驗一二三命令

實驗1 linux操作基礎和文字編輯 useradd 使用者名稱 passwd 使用者名稱 groupadd 使用者組名 man 命令 help命令 vi 檔名 i命令插入文字 刪除乙個字元,用x命令 刪除一行,用dd命令 刪除剩下的行,用d命令 復原文字命令用u 命令ndd 能夠剪下從當前行開始的...