dcomplex.cpp

来自「一个非常全的vc编程的原程序代码是关于图像处理的!」· C++ 代码 · 共 82 行

CPP
82
字号
///////////////////////////////////////////////////////////
////  DComplex.cpp  ///////////////////////////////////////
///////////////////////////////////////////////////////////

#include "stdafx.h"
#include "math.h"
#include "DComplex.h"

DComplex DComplex::operator=(DComplex& c)
{ 	
	x = c.x;
	y = c.y;
	return c;	
}

DComplex operator+(DComplex& c1, DComplex& c2)
{
	DComplex rsl;
	rsl.x = c1.x+c2.x;
	rsl.y = c1.y+c2.y;
	return rsl;
}

DComplex operator-(DComplex& c1, DComplex&c2)
{
	DComplex rsl;
	rsl.x = c1.x-c2.x;
	rsl.y = c1.y-c2.y;
	return rsl;
}

DComplex operator*(DComplex& c1, DComplex& c2)
{
	DComplex rsl;
	rsl.x = c1.x*c2.x-c1.y*c2.y;
	rsl.y = c1.y*c2.x+c1.x*c2.y;
	return rsl;
}

DComplex operator/(DComplex& c1, DComplex& c2)
{
	DComplex rsl = c1*Conjunction(c2);
    double m = Abs(c2)*Abs(c2);
    rsl.x /= (double)m;
    rsl.y /= (double)m;
	return rsl;
}

DComplex Conjunction(DComplex& c)
{
	DComplex rsl;
	rsl.x = c.x;
	rsl.y = -c.y;
	return rsl;
}

double Abs(DComplex& c)
{
	return sqrt((double)c.x*c.x+c.y*c.y);
}

DComplex Polar(double magnitude, double angle)
{
	DComplex rsl;
	rsl.x = magnitude*cos(angle);
	rsl.y = magnitude*sin(angle);
	return rsl;
}

BYTE LimitTrunc(DComplex& c, int RLimit, int LLimit, int mode)
{
	double d = mode ? Abs(c) : c.x;
	int i = (int)d;
	
    if (d-i>=0.5) i++;
    else if (d-i<-0.5) i--;

	if (i<LLimit) i = LLimit;
	if (i>RLimit) i = RLimit;

    return (BYTE)i;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?