bool SLine::is_vertical_to(SLine &other_line, int epsilon) { int dot_prod = dot_product(other_line); if(epsilon) { //calculate double norm1 = norm(); double norm2 = other_line.norm(); double cosfi = dot_prod/norm1/norm2; double fi = acos(cosfi); if(std::abs(DEGREE_TO_RAD(90.0)-fi) < epsilon) return true; } else return static_cast<bool>(std::abs(dot_prod) < 0.000001); return false; }
bool SLine::is_parallel_to(SLine &other_line, int epsilon) { double dot_prod = static_cast<double>(dot_product(other_line)); if(dot_prod < 0.0000001) return false; double norm1 = norm(); double norm2 = other_line.norm(); double cosfi = dot_prod/norm1/norm2; double fi = acos(cosfi); double diff = std::abs(DEGREE_TO_RAD(0.0)-fi); if(epsilon) { if(diff < epsilon) //calculate return true; } else { return static_cast<bool>(std::abs(fi) < 0.000001); } return false; }