/// <summary>
/// Function for determination if some line has intersection with edge of css
/// <summary>
/// <param name="AngleLineLoad">Angle of loaded line in degrees</param>
/// <param name="CssID">ID of used cross-section</param>
/// <param name="IndexEdge">Index of edge for calculation</param>
/// <returns>Returns structured array:
/// <list type="bullet">
/// <item>"Type"
/// <list type="bullet">
/// <item>-1 - outside</item>
/// <item>0 - inside</item>
/// <item>1 - first point</item>
/// <item>2 - second point</item>
/// </list>
/// </item>
/// <item>"X" - X coordinate of intersection</item>
/// <item>"Y" - Y coordinate of intersection</item>
/// </list>
/// </returns>
/// <code>
/// IF () {
/// } ELSE {
/// }
/// </code>
/// <example>http://designforms.net/forum</example>
public object IntersectionLineLoadAndEdge(double AngleLineLoad, double CssID, double IndexEdge) {
double Precision →007533= 3;
double pom →007534= -1;
double X →007535= 0;
double Y →007536= 0;
object InfoEdges →007537= CONCRETE.Designer.GetInfoAboutEdgeOfCrossSection(CssID, IndexEdge);
object EdgeCoordFirst →007538= CONCRETE.General.GetCsePointPosition(CssID, InfoEdges.First);
object EdgeCoordSecond →007539= CONCRETE.General.GetCsePointPosition(CssID, InfoEdges.Second);
double A_Css →007540= (EdgeCoordSecond.Y-EdgeCoordFirst.Y);
double B_Css →007541= EdgeCoordFirst.X-EdgeCoordSecond.X;
double C_Css →007542= A_Css*EdgeCoordFirst.X+B_Css*EdgeCoordFirst.Y;
object CoordLoad1 →007543= new PointD(0, 0);
object CoordLoad2 →007544= new PointD(cos(AngleLineLoad), sin(AngleLineLoad));
double A_Load →007545= (CoordLoad2.Y-CoordLoad1.Y);
double B_Load →007546= CoordLoad1.X-CoordLoad2.X;
double C_Load →007547= A_Load*CoordLoad1.X+B_Load*CoordLoad1.Y;
double delta →007548= A_Css*B_Load-A_Load*B_Css;
IF(delta != 0) {
X →007549= (B_Load*C_Css-B_Css*C_Load)/delta;
Y →007550= (A_Css*C_Load-A_Load*C_Css)/delta;
IF(Compare(X, EdgeCoordFirst.X, Precision) == 0 && Compare(Y, EdgeCoordFirst.Y, Precision) == 0) {
pom →007558= 1;
}
IF(Compare(X, EdgeCoordSecond.X, Precision) == 0 && Compare(Y, EdgeCoordSecond.Y, Precision) == 0) {
pom →007560= 2;
}
IF(Compare(X, min(EdgeCoordFirst.X, EdgeCoordSecond.X), Precision) >= 0 && Compare(X, max(EdgeCoordFirst.X, EdgeCoordSecond.X), Precision) <= 0 && Compare(Y, min(EdgeCoordFirst.Y, EdgeCoordSecond.Y), Precision) >= 0 && Compare(Y, max(EdgeCoordFirst.Y, EdgeCoordSecond.Y), Precision) <= 0) {
pom →007562= 0;
}
}
object PomArray →007563= new Structure("Type", pom, "X", X, "Y", Y);
return PomArray;
}
http://designforms.net
Calculation
Layout 0
Layout 1
Layout 2
Layout 3
Layout 4
Layout 5
-
"Function for verifying if two edges are symetrical"
-
"Function for creating circumscribed section around defined section"
-
"Function for determination if css is symetric around axis or not"
-
"Function for creating general equation of line from two points"
-
"Function for getting minimal dimension of cross-section"
-
"Function for determination if some line has intersection with edge of css"
-
"Function for creating general equation of line from point and angle"
-
"Function for determination, if point is above or under line"
-
"Function for minimal width width of cross-section "