test

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
2.5 kB
2
Indexable
Never
struct Value
{
	bool isFormulized = false;
	bool isPlain = true;
	bool isValid; // şimdilik kullanamdım ama kullanılırmı bilmiyom
	string sValue; // lua scripti
	double get(Luastack & GlobalLuaStack);
	void set(double arg,Luastack & GlobalLuaStack);
	void set(string arg,Luastack & GlobalLuaStack);
}

void Value::set(double arg)
{
	// TODO: fail durumu kontrol et
	this->sValue = toString(arg);
	this->isPlain = false;
}

void Value::set(string arg)
{
	// TODO: fail durumu kontrol et
	this->sValue = arg;
	this->isFormulized = true
	this->isPlain = false;
}

double Value::get(Luastack & GlobalLuaStack)
{
	// Lua bunu lütfen çözermisin
	// fail etmesini kontrol edilmeli set ederken
	return GlobalLuaStack.runScript(this->sValue)
}


struct Geometry;
{
	std::vector<Value> values;
	int getDOF(); // En az 2 nokta fixlenmeli yani 6 value plain değilse (2 boyutta öteleme ve dönmeyi kıstlar) (NOT: geometri curve ise iş farklı tüm pointler ve valueler plain olammalı)  . Degree off freedom 0 olunca gemotri fixlenmiş demektir
	bool isOverConstrained();
	bool isFullyConstrained(){ return 0 == this->getDOF();}; // gerekli ve yeterli şartlar sağlnadı
}

///
struct Constrait
{
	Geometry * a;
	Geometry * b; 
}

struct Fix:Constrait // koordinat çapalama fix leme constirati , tegetlik, paralellik, diklik, eşit, açı, aynalama
{
	// todo: herhangi bir geometriye ait value yi çapalayan fonsiyonlar buraya 
}

void applyFixConstaitToLineGeomtriStartPointXComponent(Geometry & line, Constrait & fix);
void applyFixConstaitToLineGeomtriStartPointYComponent(Geometry & line, Constrait & fix);
void applyFixConstaitToLineGeomtriEndPointXComponent(Geometry & line, Constrait & fix);
void applyFixConstaitToLineGeomtriEndPointYComponent(Geometry & line, Constrait & fix);

struct Line:Geometry // circle , bezier curve , 
{
	PointXY getStartPoint(){ return PointXY( this->values[0].get()  ,  this->values[1].get());};
	PointXY getEndPoint(){ return PointXY( this->values[2].get() , this->values[3].get());};
}

class SketchSolver
{
	std::vector<Constrait> constraints;
	std::vector<Geometry> geometries;
	void inspect(){ 
		this->loadCurrentObjectToLuaStack(GlobalLuaStack);
		this->performConstiants();// önce contrainları  
		this->checkGeomtries(GlobalLuaStack);
	};
private:
	void loadCurrentObjectToLuaStack(Luastack lua);
	void performConstiants();
	void checkGeomtries();
}