View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0024772 | Community | OCCT:Modeling Algorithms | public | 2014-03-28 01:02 | 2023-03-19 18:54 |
Reporter | Roman Lygin | Assigned To | |||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Product Version | 6.7.0 | ||||
Target Version | 7.7.0 | Fixed in Version | 7.6.2 | ||
Summary | 0024772: Modeling Algorithms - Intersection of cylinder and cone produces incorrect results | ||||
Description | There are 4 segments produced by the intersector, including closed ones with parts not lying on a cylinder (e.g. r_1 - see screenshot). The cone is a flat one, with angle ~PI/2. This combination comes from a Parasolid file. Note that 6.6.0 produces no result at all. So some changes integrated 6.7.0 lead to this incorrect computation. | ||||
Steps To Reproduce | restore s1 restore s2 intersect r s1 s2 | ||||
Tags | No tags attached. | ||||
Test case number | bugs modalg_7 bug24772 | ||||
|
archive.zip (5,873 bytes) |
|
r_1.png (31,054 bytes) |
|
Problem described in issue is reproduced on current state of OCCT. |
|
This problem is limitation for the current version of the intersection algorithm. The reason is following: 1. Cone-Cylinder intersection algorithm produces ALine. Aline is internal (for OCCT) 3D-intersection curve. 2. This ALine is projected to the every intersected surfaces (in order to obtain correspond p-curve). For that, ALine is discretized on several points, every point is projected to the surfaces and after that obtained set of 2D-points is approximated to the p-curve. In case of near-plane cones projection of 3D-point to the cone cannot be computed correctly because projector cannot decide from which side of the apex the projection point should be chosen (for valid cones, the nearest point is chosen but for near-plane cones correspond distances differ insignificantly). 3. Moreover, projection is used while computation of value of the ALine. So, methods IntAna_Curve::Value(...) and IntPatch_ALine::Value(...) work wrong with near-plane cones. Possible ways to fix: 1. Use bi-parametric intersection algorithm (IntPatch_PrmPrmIntersection). This algorithm initially works in 2D-space. So it does not made any projections. Consequently, it will produce valid result. 2. Replace existing intersection algorithm with new one like already used while Cylinder-Cylinder intersecting. New algorithm will work in 2D-space too and is oriented to special types of intersected surfaces (analytical cases: Cylinder-Cylinder, Cylinder-Cone, Cone-Sphere etc.) The bright advantage of 2nd step in compare with 1st is the fix 0023178 and 0026894 where bi-parametric intersector worked too long but could not find any result. New algorithm currently works perfectly. I am going to implement the way 2 while fixing the issue 0024418. |
|
Dear Mikhail, We are looking forward your decision. Is this issue possible to be fixed? P.S. Please look at the messages 0024772:0076833 and 0027705:0080371. |
|
I propose to go by 2nd way. |
|
When have time. |
|
Branch CR24772 has been created by knosulko. SHA-1: 9df9bbb898d35e08c19f3b252badb7b886799eea Detailed log of new commits: Author: knosulko Date: Wed Mar 16 13:13:15 2022 +0300 0024772: Modeling Algorithms - Intersection of cylinder and cone produces incorrect results GeomInt/GeomInt_IntSS.cxx - handle flat cone case |
|
Branch CR24772 has been updated forcibly by knosulko. SHA-1: 643461bd8373524cd03b6ce4e96beb7592f9d560 |
|
Branch CR24772 has been updated by knosulko. SHA-1: d8535d1a9204a89e5243b6d8dfa697c83b5b9c5a Detailed log of new commits: Author: knosulko Date: Tue Mar 22 16:46:32 2022 +0300 fix remarks |
|
Branch CR24772 has been updated forcibly by knosulko. SHA-1: 578dfad9d7f3d10d84488d2d9272e8a842fd4af1 |
|
Branch CR24772 has been updated forcibly by knosulko. SHA-1: 5f0142c3f126dbfbbc903f4ac3be23f32817d73b |
|
Branch CR24772 has been updated forcibly by knosulko. SHA-1: 30e9dd6d88b9b7380c52ddb3e1f127bd6b94fa6c |
|
bug24772_s3.draw (226 bytes) |
|
Branch CR24772 is ready for review http://jenkins-test-occt.nnov.opencascade.com/view/CR24772-master-knosulko/view/COMPARE/ Branches for Integration: OCCT - CR24772 Products - Not |
|
Branch CR24772 Branches for Integration: OCCT - CR24772 Products - Not |
|
+ else { + U = atan2(Ploc.Y(), Ploc.X()); Please reformat new code using 2-spaces indentation (see OCCT Coding Style). + Standard_EXPORT static void GetConeApexParam (const gp_Cone& C, Standard_Real& U, Standard_Real& V); Please provide description to the method on it's purpose and arguments. It is recommended to rename arguments with `the` prefix following OCCT Coding Style. + if (theS->GetType() != GeomAbs_Cone) + throw Standard_NoSuchObject("IntPatch_Intersection : Surface is not Cone"); It is recommended to put single-line statements into figure brackets. +static void SplitCone( It is better naming local/private/protected methods with lower-case, and it is desired adding a description. + const Handle(Adaptor3d_TopolTool)& theD2, + const Standard_Real Tol, + NCollection_Vector< Handle(Adaptor3d_Surface)>& aSeqHS1, + NCollection_Vector< Handle(Adaptor3d_Surface)>& aSeqHS2); `the` prefix. + NCollection_Vector< Handle(Adaptor3d_Surface)> aVecHS1; NCollection_Vector looks confusing for this usage scenario (NCollection_List or NCollection_Sequence should suffice), but OK to leave as is. + const Handle(Adaptor3d_Surface) aHS1 = aVecHS1.Value (aNumOfHS1); ... + const Handle(Adaptor3d_Surface) aHS2 = aVecHS2.Value (aNumOfHS2); const Handle(Adaptor3d_Surface)& +//purpose : . Please avoid trailing spaces in new code. |
|
Branch CR24772 has been updated forcibly by knosulko. SHA-1: f0e0f945b3a420ee7d5817f188e3145adc621798 |
|
Please review the branch CR24772. |
|
+ //! @param theC [in] conical surface The valid Doxygen syntax for in/out is: > //! @param[in] theC conical surface |
|
Branch CR24772 has been updated forcibly by knosulko. SHA-1: 93330d3b40a7a6d89c5903aaff407279ef5f7d3c |
|
Please review the branch CR24772. |
|
Combination - OCCT branch : IR-2022-03-25 master SHA - e4753a7d1658331a79025964d1c55f2a6d999c6c 49e51745631c52b6c452c65adae4d6dfa21a1b1e Products branch : IR-2022-03-25 SHA - 303106116fcb5c01a598ea01cc5174a45aae8f18 was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences CPU differences: Debian80-64: OCCT Total CPU difference: 18507.51000000038 / 18488.570000000385 [+0.10%] Products Total CPU difference: 11703.320000000122 / 11709.530000000132 [-0.05%] Windows-64-VC14: OCCT Total CPU difference: 20451.96875 / 20413.53125 [+0.19%] Products Total CPU difference: 13191.96875 / 13181.65625 [+0.08%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR24772 has been deleted by mnt. SHA-1: 93330d3b40a7a6d89c5903aaff407279ef5f7d3c |
occt: master 5ae6f08c 2022-03-16 13:13:15
Committer: |
0024772: Modeling Algorithms - Intersection of cylinder and cone produces incorrect results GeomInt/GeomInt_IntSS.cxx - handle flat cone case IntPatch/IntPatch_Intersection.hxx, IntPatch/IntPatch_Intersection.cxx - method for preparing surfaces is added bugs/lowalgos/intss/bug24772 - test case is changed according new behavior |
Affected Issues 0024772 |
|
mod - src/Adaptor3d/Adaptor3d_TopolTool.cxx | Diff File | ||
mod - src/Adaptor3d/Adaptor3d_TopolTool.hxx | Diff File | ||
mod - src/GeomInt/GeomInt_IntSS.cxx | Diff File | ||
mod - src/IntPatch/IntPatch_Intersection.cxx | Diff File | ||
mod - src/IntPatch/IntPatch_Intersection.hxx | Diff File | ||
mod - tests/lowalgos/intss/bug24772 | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-03-28 01:02 | Roman Lygin | New Issue | |
2014-03-28 01:02 | Roman Lygin | Assigned To | => ifv |
2014-03-28 01:02 | Roman Lygin | File Added: archive.zip | |
2014-03-28 01:03 | Roman Lygin | File Added: r_1.png | |
2014-09-12 14:36 |
|
Target Version | => 7.1.0 |
2016-10-28 11:54 |
|
Target Version | 7.1.0 => 7.2.0 |
2017-07-21 11:34 |
|
Target Version | 7.2.0 => 7.3.0 |
2017-08-01 10:49 |
|
Test case number | => bugs modalg_7 bug24772 |
2017-08-01 10:49 |
|
Note Added: 0069011 | |
2017-12-05 17:01 |
|
Target Version | 7.3.0 => 7.4.0 |
2018-05-24 14:17 |
|
Relationship added | related to 0027705 |
2018-06-19 10:38 |
|
Relationship added | related to 0029807 |
2018-06-19 13:09 |
|
Note Added: 0076833 | |
2018-06-19 13:10 |
|
Relationship deleted | related to 0029807 |
2018-06-19 13:10 |
|
Relationship added | related to 0024418 |
2018-10-26 13:20 |
|
Note Added: 0080373 | |
2018-10-26 13:21 |
|
Assigned To | ifv => msv |
2018-10-26 13:21 |
|
Status | new => feedback |
2018-10-30 12:39 |
|
Note Added: 0080517 | |
2018-10-30 12:43 |
|
Note Added: 0080519 | |
2018-10-30 12:43 |
|
Assigned To | msv => nbv |
2018-10-30 12:43 |
|
Status | feedback => assigned |
2019-08-12 19:08 |
|
Assigned To | nbv => msv |
2019-08-12 19:22 |
|
Target Version | 7.4.0 => Unscheduled |
2019-09-04 12:11 | kgv | Summary | Intersection of cylinder and cone produces incorrect results => Modeling Algorithms - Intersection of cylinder and cone produces incorrect results |
2021-12-24 16:45 |
|
Assigned To | msv => knosulko |
2022-02-25 15:42 |
|
Time allocated | 21.2.2022: 8 h. => set |
2022-02-25 15:43 |
|
Time allocated | 22.2.2022: 7 h. => set |
2022-02-25 15:43 |
|
Time allocated | 24.2.2022: 8 h. => set |
2022-02-25 15:43 |
|
Time allocated | 25.2.2022: 8 h. => set |
2022-03-04 15:05 |
|
Time allocated | 28.2.2022: 8 h. => set |
2022-03-04 15:05 |
|
Time allocated | 1.3.2022: 8 h. => set |
2022-03-04 15:05 |
|
Time allocated | 2.3.2022: 8 h. => set |
2022-03-04 15:06 |
|
Time allocated | 3.3.2022: 8 h. => set |
2022-03-04 15:06 |
|
Time allocated | 4.3.2022: 8 h. => set |
2022-03-11 15:52 |
|
Time allocated | 7.3.2022: 7 h. => set |
2022-03-11 15:52 |
|
Time allocated | 9.3.2022: 8 h. => set |
2022-03-11 15:52 |
|
Time allocated | 10.3.2022: 8 h. => set |
2022-03-11 15:53 |
|
Time allocated | 11.3.2022: 8 h. => set |
2022-03-11 15:53 |
|
Time allocated Deleted | 2022-03-10: 8,00 h. => deleted |
2022-03-11 15:53 |
|
Time allocated | 10.3.2022: 8 h. => set |
2022-03-11 15:53 |
|
Time allocated Deleted | 2022-03-10: 8,00 h. => deleted |
2022-03-11 15:54 |
|
Time allocated | 10.3.2022: 8 h. => set |
2022-03-16 15:49 | git | Note Added: 0107304 | |
2022-03-18 15:05 |
|
Time allocated | 11.3.2022: 8 h. => set |
2022-03-18 15:07 |
|
Time allocated | 12.3.2022: 8 h. => set |
2022-03-18 15:08 |
|
Time allocated | 13.3.2022: 8 h. => set |
2022-03-18 15:09 |
|
Time allocated Deleted | 2022-03-13: 8,00 h. => deleted |
2022-03-18 15:09 |
|
Time allocated Deleted | 2022-03-12: 8,00 h. => deleted |
2022-03-18 15:09 |
|
Time allocated Deleted | 2022-03-11: 8,00 h. => deleted |
2022-03-18 15:10 |
|
Time allocated | 14.3.2022: 8 h. => set |
2022-03-18 15:10 |
|
Time allocated | 15.3.2022: 8 h. => set |
2022-03-18 15:12 |
|
Time allocated | 16.3.2022: 8 h. => set |
2022-03-18 15:13 |
|
Time allocated | 17.3.2022: 8 h. => set |
2022-03-18 15:13 |
|
Time allocated Deleted | 2022-03-17: 8,00 h. => deleted |
2022-03-18 15:13 |
|
Time allocated | 17.3.2022: 8 h. => set |
2022-03-18 15:13 |
|
Time allocated | 18.3.2022: 8 h. => set |
2022-03-22 14:05 | git | Note Added: 0107388 | |
2022-03-22 17:09 | git | Note Added: 0107393 | |
2022-03-22 17:10 | git | Note Added: 0107394 | |
2022-03-23 11:28 | git | Note Added: 0107395 | |
2022-03-23 11:32 | git | Note Added: 0107396 | |
2022-03-23 11:32 |
|
Note Added: 0107397 | |
2022-03-23 11:32 |
|
File Added: bug24772_s3.draw | |
2022-03-23 14:54 |
|
Assigned To | knosulko => ifv |
2022-03-23 14:54 |
|
Status | assigned => resolved |
2022-03-23 14:54 |
|
Note Added: 0107398 | |
2022-03-23 17:09 |
|
Assigned To | ifv => bugmaster |
2022-03-23 17:09 |
|
Status | resolved => reviewed |
2022-03-23 17:09 |
|
Note Added: 0107400 | |
2022-03-23 17:25 | kgv | Note Added: 0107401 | |
2022-03-23 17:26 | kgv | Assigned To | bugmaster => knosulko |
2022-03-23 17:26 | kgv | Status | reviewed => assigned |
2022-03-23 17:26 | kgv | Target Version | Unscheduled => 7.7.0 |
2022-03-23 18:56 | git | Note Added: 0107402 | |
2022-03-23 19:06 |
|
Assigned To | knosulko => kgv |
2022-03-23 19:06 |
|
Status | assigned => resolved |
2022-03-23 19:06 |
|
Note Added: 0107403 | |
2022-03-24 09:55 | kgv | Note Added: 0107406 | |
2022-03-24 09:55 | kgv | Assigned To | kgv => bugmaster |
2022-03-24 09:55 | kgv | Status | resolved => reviewed |
2022-03-24 10:13 |
|
Assigned To | bugmaster => knosulko |
2022-03-24 10:13 |
|
Status | reviewed => assigned |
2022-03-24 10:26 | git | Note Added: 0107409 | |
2022-03-24 10:32 |
|
Assigned To | knosulko => kgv |
2022-03-24 10:32 |
|
Status | assigned => resolved |
2022-03-24 10:32 |
|
Note Added: 0107410 | |
2022-03-24 10:35 | kgv | Assigned To | kgv => bugmaster |
2022-03-24 10:35 | kgv | Status | resolved => reviewed |
2022-03-25 15:48 |
|
Time allocated | 21.3.2022: 8 h. => set |
2022-03-25 15:49 |
|
Time allocated | 22.3.2022: 8 h. => set |
2022-03-25 15:49 |
|
Time allocated | 23.3.2022: 8 h. => set |
2022-03-27 10:46 |
|
Status | reviewed => tested |
2022-03-27 10:46 |
|
Note Added: 0107438 | |
2022-03-27 12:32 |
|
Changeset attached | => occt master 5ae6f08c |
2022-03-27 12:32 |
|
Assigned To | bugmaster => knosulko |
2022-03-27 12:32 |
|
Status | tested => verified |
2022-03-27 12:32 |
|
Resolution | open => fixed |
2022-04-02 19:34 | git | Note Added: 0107561 | |
2023-03-19 18:54 | vglukhik | Status | verified => closed |
2023-03-19 18:54 | vglukhik | Fixed in Version | => 7.6.2 |