Calculate total length of edges in select Voronoi diagram












3












$begingroup$


I want to calculate the total length of edges in a Voronoi diagram like this
Voronoi



I can calculate this with



lengths = RegionMeasure /@ MeshPrimitives[VoronoiMesh[pts], 1];

Total[lengths]


but, I want to eliminate from the calculation the diagrams touching the border of the image. I can select this diagrams like here



Voronoi interior



and I can keep with the orange diagrams



selected cells



but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?










share|improve this question











$endgroup$








  • 1




    $begingroup$
    Can you add the code to select the inner cells and the definition of pts?
    $endgroup$
    – MarcoB
    5 hours ago










  • $begingroup$
    The distribution of points pts comes from a picture but could be random numbers. For example: SeedRandom[332] pts = RandomReal[1, {100, 2}]; xy = VoronoiMesh[pts, {{0, 1}, {0, 1}}]; i2 = MeshCellIndex[xy, {2, "Interior"}] ; HighlightMesh[xy, Style[i2, LightOrange]]
    $endgroup$
    – Mati Ger
    4 hours ago
















3












$begingroup$


I want to calculate the total length of edges in a Voronoi diagram like this
Voronoi



I can calculate this with



lengths = RegionMeasure /@ MeshPrimitives[VoronoiMesh[pts], 1];

Total[lengths]


but, I want to eliminate from the calculation the diagrams touching the border of the image. I can select this diagrams like here



Voronoi interior



and I can keep with the orange diagrams



selected cells



but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?










share|improve this question











$endgroup$








  • 1




    $begingroup$
    Can you add the code to select the inner cells and the definition of pts?
    $endgroup$
    – MarcoB
    5 hours ago










  • $begingroup$
    The distribution of points pts comes from a picture but could be random numbers. For example: SeedRandom[332] pts = RandomReal[1, {100, 2}]; xy = VoronoiMesh[pts, {{0, 1}, {0, 1}}]; i2 = MeshCellIndex[xy, {2, "Interior"}] ; HighlightMesh[xy, Style[i2, LightOrange]]
    $endgroup$
    – Mati Ger
    4 hours ago














3












3








3





$begingroup$


I want to calculate the total length of edges in a Voronoi diagram like this
Voronoi



I can calculate this with



lengths = RegionMeasure /@ MeshPrimitives[VoronoiMesh[pts], 1];

Total[lengths]


but, I want to eliminate from the calculation the diagrams touching the border of the image. I can select this diagrams like here



Voronoi interior



and I can keep with the orange diagrams



selected cells



but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?










share|improve this question











$endgroup$




I want to calculate the total length of edges in a Voronoi diagram like this
Voronoi



I can calculate this with



lengths = RegionMeasure /@ MeshPrimitives[VoronoiMesh[pts], 1];

Total[lengths]


but, I want to eliminate from the calculation the diagrams touching the border of the image. I can select this diagrams like here



Voronoi interior



and I can keep with the orange diagrams



selected cells



but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?







computational-geometry






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 7 mins ago









J. M. is computer-less

97.3k10303463




97.3k10303463










asked 5 hours ago









Mati GerMati Ger

483




483








  • 1




    $begingroup$
    Can you add the code to select the inner cells and the definition of pts?
    $endgroup$
    – MarcoB
    5 hours ago










  • $begingroup$
    The distribution of points pts comes from a picture but could be random numbers. For example: SeedRandom[332] pts = RandomReal[1, {100, 2}]; xy = VoronoiMesh[pts, {{0, 1}, {0, 1}}]; i2 = MeshCellIndex[xy, {2, "Interior"}] ; HighlightMesh[xy, Style[i2, LightOrange]]
    $endgroup$
    – Mati Ger
    4 hours ago














  • 1




    $begingroup$
    Can you add the code to select the inner cells and the definition of pts?
    $endgroup$
    – MarcoB
    5 hours ago










  • $begingroup$
    The distribution of points pts comes from a picture but could be random numbers. For example: SeedRandom[332] pts = RandomReal[1, {100, 2}]; xy = VoronoiMesh[pts, {{0, 1}, {0, 1}}]; i2 = MeshCellIndex[xy, {2, "Interior"}] ; HighlightMesh[xy, Style[i2, LightOrange]]
    $endgroup$
    – Mati Ger
    4 hours ago








1




1




$begingroup$
Can you add the code to select the inner cells and the definition of pts?
$endgroup$
– MarcoB
5 hours ago




$begingroup$
Can you add the code to select the inner cells and the definition of pts?
$endgroup$
– MarcoB
5 hours ago












$begingroup$
The distribution of points pts comes from a picture but could be random numbers. For example: SeedRandom[332] pts = RandomReal[1, {100, 2}]; xy = VoronoiMesh[pts, {{0, 1}, {0, 1}}]; i2 = MeshCellIndex[xy, {2, "Interior"}] ; HighlightMesh[xy, Style[i2, LightOrange]]
$endgroup$
– Mati Ger
4 hours ago




$begingroup$
The distribution of points pts comes from a picture but could be random numbers. For example: SeedRandom[332] pts = RandomReal[1, {100, 2}]; xy = VoronoiMesh[pts, {{0, 1}, {0, 1}}]; i2 = MeshCellIndex[xy, {2, "Interior"}] ; HighlightMesh[xy, Style[i2, LightOrange]]
$endgroup$
– Mati Ger
4 hours ago










1 Answer
1






active

oldest

votes


















6












$begingroup$

SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];


"Interior"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm , {1, "Interior"}]]



19.4739




Alternatively,



Total[RegionMeasure /@ MeshPrimitives[vm, {1, "Interior"}]]



19.4739




RegionMeasure[MeshRegion[MeshCoordinates[vm], MeshCells[vm, {1, "Interior"}]]]



19.4739




"Boundary"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Boundary"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]



5.92015




"Frontier"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]



5.357575




All lines



Total[vm["EdgeLengths"]]



30.75167




Total[ArcLength /@ MeshPrimitives[vm , 1]]



30.751672460568727







share|improve this answer











$endgroup$













  • $begingroup$
    So long as none of the cells adjacent to the boundary aren't in fact the full Voronoi cell. This would only happen in contrived cases though.
    $endgroup$
    – Chip Hurst
    5 hours ago










  • $begingroup$
    @ChipHurst, good point.
    $endgroup$
    – kglr
    5 hours ago










  • $begingroup$
    I am impressed by the speed and clarity in your response, kglr. I am very grateful with you. Thank you.
    $endgroup$
    – Mati Ger
    4 hours ago










  • $begingroup$
    @MatiGer, my pleasure. Thank you for the kind words and accept.
    $endgroup$
    – kglr
    4 hours ago











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f192834%2fcalculate-total-length-of-edges-in-select-voronoi-diagram%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









6












$begingroup$

SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];


"Interior"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm , {1, "Interior"}]]



19.4739




Alternatively,



Total[RegionMeasure /@ MeshPrimitives[vm, {1, "Interior"}]]



19.4739




RegionMeasure[MeshRegion[MeshCoordinates[vm], MeshCells[vm, {1, "Interior"}]]]



19.4739




"Boundary"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Boundary"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]



5.92015




"Frontier"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]



5.357575




All lines



Total[vm["EdgeLengths"]]



30.75167




Total[ArcLength /@ MeshPrimitives[vm , 1]]



30.751672460568727







share|improve this answer











$endgroup$













  • $begingroup$
    So long as none of the cells adjacent to the boundary aren't in fact the full Voronoi cell. This would only happen in contrived cases though.
    $endgroup$
    – Chip Hurst
    5 hours ago










  • $begingroup$
    @ChipHurst, good point.
    $endgroup$
    – kglr
    5 hours ago










  • $begingroup$
    I am impressed by the speed and clarity in your response, kglr. I am very grateful with you. Thank you.
    $endgroup$
    – Mati Ger
    4 hours ago










  • $begingroup$
    @MatiGer, my pleasure. Thank you for the kind words and accept.
    $endgroup$
    – kglr
    4 hours ago
















6












$begingroup$

SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];


"Interior"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm , {1, "Interior"}]]



19.4739




Alternatively,



Total[RegionMeasure /@ MeshPrimitives[vm, {1, "Interior"}]]



19.4739




RegionMeasure[MeshRegion[MeshCoordinates[vm], MeshCells[vm, {1, "Interior"}]]]



19.4739




"Boundary"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Boundary"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]



5.92015




"Frontier"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]



5.357575




All lines



Total[vm["EdgeLengths"]]



30.75167




Total[ArcLength /@ MeshPrimitives[vm , 1]]



30.751672460568727







share|improve this answer











$endgroup$













  • $begingroup$
    So long as none of the cells adjacent to the boundary aren't in fact the full Voronoi cell. This would only happen in contrived cases though.
    $endgroup$
    – Chip Hurst
    5 hours ago










  • $begingroup$
    @ChipHurst, good point.
    $endgroup$
    – kglr
    5 hours ago










  • $begingroup$
    I am impressed by the speed and clarity in your response, kglr. I am very grateful with you. Thank you.
    $endgroup$
    – Mati Ger
    4 hours ago










  • $begingroup$
    @MatiGer, my pleasure. Thank you for the kind words and accept.
    $endgroup$
    – kglr
    4 hours ago














6












6








6





$begingroup$

SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];


"Interior"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm , {1, "Interior"}]]



19.4739




Alternatively,



Total[RegionMeasure /@ MeshPrimitives[vm, {1, "Interior"}]]



19.4739




RegionMeasure[MeshRegion[MeshCoordinates[vm], MeshCells[vm, {1, "Interior"}]]]



19.4739




"Boundary"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Boundary"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]



5.92015




"Frontier"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]



5.357575




All lines



Total[vm["EdgeLengths"]]



30.75167




Total[ArcLength /@ MeshPrimitives[vm , 1]]



30.751672460568727







share|improve this answer











$endgroup$



SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];


"Interior"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm , {1, "Interior"}]]



19.4739




Alternatively,



Total[RegionMeasure /@ MeshPrimitives[vm, {1, "Interior"}]]



19.4739




RegionMeasure[MeshRegion[MeshCoordinates[vm], MeshCells[vm, {1, "Interior"}]]]



19.4739




"Boundary"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Boundary"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]



5.92015




"Frontier"



HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]


enter image description here



Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]



5.357575




All lines



Total[vm["EdgeLengths"]]



30.75167




Total[ArcLength /@ MeshPrimitives[vm , 1]]



30.751672460568727








share|improve this answer














share|improve this answer



share|improve this answer








edited 3 hours ago

























answered 5 hours ago









kglrkglr

187k10203421




187k10203421












  • $begingroup$
    So long as none of the cells adjacent to the boundary aren't in fact the full Voronoi cell. This would only happen in contrived cases though.
    $endgroup$
    – Chip Hurst
    5 hours ago










  • $begingroup$
    @ChipHurst, good point.
    $endgroup$
    – kglr
    5 hours ago










  • $begingroup$
    I am impressed by the speed and clarity in your response, kglr. I am very grateful with you. Thank you.
    $endgroup$
    – Mati Ger
    4 hours ago










  • $begingroup$
    @MatiGer, my pleasure. Thank you for the kind words and accept.
    $endgroup$
    – kglr
    4 hours ago


















  • $begingroup$
    So long as none of the cells adjacent to the boundary aren't in fact the full Voronoi cell. This would only happen in contrived cases though.
    $endgroup$
    – Chip Hurst
    5 hours ago










  • $begingroup$
    @ChipHurst, good point.
    $endgroup$
    – kglr
    5 hours ago










  • $begingroup$
    I am impressed by the speed and clarity in your response, kglr. I am very grateful with you. Thank you.
    $endgroup$
    – Mati Ger
    4 hours ago










  • $begingroup$
    @MatiGer, my pleasure. Thank you for the kind words and accept.
    $endgroup$
    – kglr
    4 hours ago
















$begingroup$
So long as none of the cells adjacent to the boundary aren't in fact the full Voronoi cell. This would only happen in contrived cases though.
$endgroup$
– Chip Hurst
5 hours ago




$begingroup$
So long as none of the cells adjacent to the boundary aren't in fact the full Voronoi cell. This would only happen in contrived cases though.
$endgroup$
– Chip Hurst
5 hours ago












$begingroup$
@ChipHurst, good point.
$endgroup$
– kglr
5 hours ago




$begingroup$
@ChipHurst, good point.
$endgroup$
– kglr
5 hours ago












$begingroup$
I am impressed by the speed and clarity in your response, kglr. I am very grateful with you. Thank you.
$endgroup$
– Mati Ger
4 hours ago




$begingroup$
I am impressed by the speed and clarity in your response, kglr. I am very grateful with you. Thank you.
$endgroup$
– Mati Ger
4 hours ago












$begingroup$
@MatiGer, my pleasure. Thank you for the kind words and accept.
$endgroup$
– kglr
4 hours ago




$begingroup$
@MatiGer, my pleasure. Thank you for the kind words and accept.
$endgroup$
– kglr
4 hours ago


















draft saved

draft discarded




















































Thanks for contributing an answer to Mathematica Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f192834%2fcalculate-total-length-of-edges-in-select-voronoi-diagram%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

GameSpot

日野市

Tu-95轟炸機