test
unknown
c_cpp
4 years ago
2.5 kB
7
Indexable
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();
}
Editor is loading...