bool XFEMGeometricCut3D::intersectWithEdge(const Point & p1, const Point & p2, Point & pint) { bool has_intersection = false; double plane_point[3] = {_center(0), _center(1), _center(2)}; double plane_normal[3] = {_normal(0), _normal(1), _normal(2)}; double edge_point1[3] = {p1(0), p1(1), p1(2)}; double edge_point2[3] = {p2(0), p2(1), p2(2)}; double cut_point[3] = {0.0,0.0,0.0}; if (Xfem::plane_normal_line_exp_int_3d(plane_point, plane_normal, edge_point1, edge_point2, cut_point) == 1) { Point temp_p(cut_point[0], cut_point[1], cut_point[2]); if ( isInsideCutPlane(temp_p) && isInsideEdge(p1, p2, temp_p) ) { pint = temp_p; has_intersection = true; } } return has_intersection; }
RH_C_FUNCTION bool ON_RadialDimension2_CreateFromPoints(ON_RadialDimension2* pRadialDimension, ON_3DPOINT_STRUCT center, ON_3DPOINT_STRUCT arrowTip, ON_3DVECTOR_STRUCT xaxis, ON_3DVECTOR_STRUCT normal, double offset_distance) { bool rc = false; if( pRadialDimension ) { ON_3dPoint _center(center.val); ON_3dPoint _arrowtip(arrowTip.val); ON_3dVector _xaxis(xaxis.val); ON_3dVector _normal(normal.val); rc = pRadialDimension->CreateFromPoints(_center, _arrowtip, _xaxis, _normal, offset_distance); } return rc; }
int progressbar::update(double now) { time_t tnow; time(&tnow); const time_t elapsed = tnow - _time_started; bool force_update = false; #ifdef WITH_RESIZE if (recv_sigwinch && _mode == normal) { const size_t old_term_width = _term_width; _term_width = get_term_width(); if (!_term_width) _term_width = default_term_width; if (_term_width != old_term_width) { _width = _term_width; force_update = true; } recv_sigwinch = 0; } #endif // WITH_RESIZE const bool inactive = now == 0; if (!_done) { if ((elapsed - _last_update) < _update_interval && !force_update) { return 0; } } else now = _expected_bytes; // Current size. const double size = (!_done) ? _initial_bytes + now : now; std::stringstream size_s; size_s.setf(std::ios::fixed); size_s << std::setprecision(1) << to_mb(size) << "M"; // Rate. double rate = elapsed ? (now/elapsed):0; std::stringstream rate_s, eta_s; rate_s.setf(std::ios::fixed); eta_s.setf(std::ios::fixed); if (!inactive) { // ETA. std::string eta; if (!_done) { const double left = (_expected_bytes - (now + _initial_bytes)) / rate; eta = to_s(static_cast<int>(left+0.5)); } else { rate = (_expected_bytes - _initial_bytes) / elapsed; eta = to_s(elapsed); } std::string unit = to_unit(rate); rate_s << std::setw(4) << std::setprecision(1) << rate << unit; eta_s << std::setw(6) << eta; } else // ETA: inactive (default). { rate_s << "--.-K/s"; eta_s << "--:--:--"; } // Percent. std::stringstream percent_s; int percent = 0; if (_expected_bytes > 0) { percent = static_cast<int>(100.0*size/_expected_bytes); if (percent < 100) percent_s << std::setw(2) << percent << "%"; else percent_s << "100%"; } // Filename. fs::path p = fs::system_complete(_file.path()); #if BOOST_FILESYSTEM_VERSION > 2 std::string fname = p.filename().string(); #else std::string fname = p.filename(); #endif switch (_mode) { default: case normal: _normal(size_s, rate_s, eta_s, percent, percent_s); break; case dotline: _dotline(size_s, rate_s, eta_s, percent_s); break; case simple: _simple(size_s, percent_s); break; } _last_update = elapsed; _count = now; return 0; }