From cd8d6ba079f18ed348797120174ad0df5df76b74 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Tue, 11 Jan 2022 13:13:51 +0100 Subject: [PATCH] 3D viewer: fix bad rendering of circles and segments due to truncation. the item radius or thickness was a int. should be a double. Fixes #10357 https://gitlab.com/kicad/code/kicad/issues/10357 --- 3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp b/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp index 88d40f39d6..b8a52c58df 100644 --- a/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp +++ b/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp @@ -335,7 +335,7 @@ void BOARD_ADAPTER::createPadWithMargin( const PAD* aPad, CONTAINER_2D_BASE* aDs -seg->GetSeg().A.y * m_biuTo3Dunits ); const SFVEC2F b3DU( seg->GetSeg().B.x * m_biuTo3Dunits, -seg->GetSeg().B.y * m_biuTo3Dunits ); - const int width3DU = ( seg->GetWidth() + clearance.x * 2 ) * m_biuTo3Dunits; + const double width3DU = ( seg->GetWidth() + clearance.x * 2 ) * m_biuTo3Dunits; // Cannot add segments that have the same start and end point if( Is_segment_a_circle( a3DU, b3DU ) ) @@ -349,7 +349,7 @@ void BOARD_ADAPTER::createPadWithMargin( const PAD* aPad, CONTAINER_2D_BASE* aDs { const SHAPE_CIRCLE* circle = (SHAPE_CIRCLE*) shape; - const int radius3DU = ( circle->GetRadius() + clearance.x ) * m_biuTo3Dunits; + const double radius3DU = ( circle->GetRadius() + clearance.x ) * m_biuTo3Dunits; const SFVEC2F center3DU( circle->GetCenter().x * m_biuTo3Dunits, -circle->GetCenter().y * m_biuTo3Dunits ); @@ -389,7 +389,7 @@ void BOARD_ADAPTER::createPadWithMargin( const PAD* aPad, CONTAINER_2D_BASE* aDs -seg.GetSeg().A.y * m_biuTo3Dunits ); const SFVEC2F b3DU( seg.GetSeg().B.x * m_biuTo3Dunits, -seg.GetSeg().B.y * m_biuTo3Dunits ); - const int width3DU = ( arc->GetWidth() + clearance.x * 2 ) * m_biuTo3Dunits; + const double width3DU = ( arc->GetWidth() + clearance.x * 2 ) * m_biuTo3Dunits; // Cannot add segments that have the same start and end point if( Is_segment_a_circle( a3DU, b3DU ) ) @@ -795,7 +795,7 @@ void BOARD_ADAPTER::buildPadOutlineAsSegments( const PAD* aPad, CONTAINER_2D_BAS const SFVEC2F center3DU( aPad->ShapePos().x * m_biuTo3Dunits, -aPad->ShapePos().y * m_biuTo3Dunits ); - const int radius = aPad->GetSize().x / 2; + const int radius = aPad->GetSize().x / 2; const float inner_radius = ( radius - aWidth / 2 ) * m_biuTo3Dunits; const float outer_radius = ( radius + aWidth / 2 ) * m_biuTo3Dunits;