Calculate total length of edges in select Voronoi diagram
$begingroup$
I want to calculate the total length of edges in a Voronoi diagram like this
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
and I can keep with the orange diagrams
but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?
computational-geometry
$endgroup$
add a comment |
$begingroup$
I want to calculate the total length of edges in a Voronoi diagram like this
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
and I can keep with the orange diagrams
but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?
computational-geometry
$endgroup$
1
$begingroup$
Can you add the code to select the inner cells and the definition ofpts
?
$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
add a comment |
$begingroup$
I want to calculate the total length of edges in a Voronoi diagram like this
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
and I can keep with the orange diagrams
but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?
computational-geometry
$endgroup$
I want to calculate the total length of edges in a Voronoi diagram like this
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
and I can keep with the orange diagrams
but I don't know how to calculate the total length of the edges of the last graphic. Any suggestions?
computational-geometry
computational-geometry
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 ofpts
?
$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
add a comment |
1
$begingroup$
Can you add the code to select the inner cells and the definition ofpts
?
$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
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];
"Interior"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]
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]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]
5.92015
"Frontier"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]
5.357575
All lines
Total[vm["EdgeLengths"]]
30.75167
Total[ArcLength /@ MeshPrimitives[vm , 1]]
30.751672460568727
$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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
$begingroup$
SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];
"Interior"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]
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]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]
5.92015
"Frontier"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]
5.357575
All lines
Total[vm["EdgeLengths"]]
30.75167
Total[ArcLength /@ MeshPrimitives[vm , 1]]
30.751672460568727
$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
add a comment |
$begingroup$
SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];
"Interior"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]
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]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]
5.92015
"Frontier"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]
5.357575
All lines
Total[vm["EdgeLengths"]]
30.75167
Total[ArcLength /@ MeshPrimitives[vm , 1]]
30.751672460568727
$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
add a comment |
$begingroup$
SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];
"Interior"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]
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]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]
5.92015
"Frontier"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]
5.357575
All lines
Total[vm["EdgeLengths"]]
30.75167
Total[ArcLength /@ MeshPrimitives[vm , 1]]
30.751672460568727
$endgroup$
SeedRandom[1]
pts = RandomReal[1, {100, 2}];
vm = VoronoiMesh[pts];
"Interior"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Interior"}], Red]]
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]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Boundary"}]]
5.92015
"Frontier"
HighlightMesh[vm, Style[MeshCellIndex[vm, {1, "Frontier"}], Red]]
Total[ArcLength /@ MeshPrimitives[vm, {1, "Frontier"}]]
5.357575
All lines
Total[vm["EdgeLengths"]]
30.75167
Total[ArcLength /@ MeshPrimitives[vm , 1]]
30.751672460568727
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
add a comment |
$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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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