1
$\begingroup$

I have a point (0.128531, 0.0765588) on xy plane where the range of x is {-0.678525, 0.678525} and the range of y is {0, 0.678525}. I want to make a uniform grid including the point in its center (let’s say a square). How can I make this grid using Mathematica.? I tried the below steps, but It isn’t a uniform grid.

Range[-0.6785245628862672`, 0.6785245628862672, 0.04];

Range[0, 0.6785245628862672, 0.04];
$\endgroup$
3
  • 3
    $\begingroup$ Consider using Subvide. $\endgroup$ – Henrik Schumacher Jan 16 '20 at 15:09
  • $\begingroup$ This smacks of an XY problem: what do you want to accomplish once you have that grid? Perhaps there is a way to accomplish your actual final goal that may be even easier than this. $\endgroup$ – MarcoB Jan 16 '20 at 17:05
  • $\begingroup$ Actually, I wanted a uniform grid around this point to calculate the velocity field. $\endgroup$ – Ghady Jan 18 '20 at 1:31
3
$\begingroup$
n = 20;
gridSize = 0.04;
pts = {x, y} = {0.128531, 0.0765588};
gridX = x + gridSize Range[-n, n];
gridY = y + gridSize Range[0, n];
pts2 = Join @@ Outer[List, gridX, gridY];
ListPlot[{{pts}, pts2}, 
 PlotStyle -> {{AbsolutePointSize@10, Red}, Blue}, 
 PlotRange -> {{-0.7, 0.7}, {-0.7, 0.7}}, Frame -> True, 
 AspectRatio -> 1]

enter image description here

$\endgroup$
2
  • $\begingroup$ Thank you so much! I used your procedure for small range and it works to provide the new list for x and y. $\endgroup$ – Ghady Jan 16 '20 at 18:01
  • $\begingroup$ Glad to help... $\endgroup$ – OkkesDulgerci Jan 16 '20 at 18:07
1
$\begingroup$

The grid you are trying to create doesn't contain the point. In fact, to convert your example to a grid, you can do:

grid = Tuples[{Range[-0.6785245628862672`, 0.6785245628862672, 0.04], 
    Range[0, 0.6785245628862672, 0.04]}];

xy = {{0.128531, 0.0765588}};

ListPlot[{grid, xy}, PlotRange -> All, PlotStyle -> {Blue, Red}, 
 Frame -> True, Axes -> False, ImageSize -> Large]

enter image description here

It's not clear to me what you mean with: "I want to make a uniform grid including the point in its center (let’s say a square)." but maybe you can re-adapt my example to your needs.

$\endgroup$
1
  • $\begingroup$ Thank you! Basically, in the specific red point above, I would like to have grid on it, and the red point would be the center of the grid. Also, after the grid is done, from this grid, I would be able to determine the values for x, and y. My goal is not just to achieve the grid, but being able to get the new x, and y values based on the new grid. $\endgroup$ – Ghady Jan 16 '20 at 15:28
1
$\begingroup$

Since you are looking for a uniform grid, I would prepare the grid first with a specific number of division.

xr = {-0.6785245628862672`, 0.6785245628862672};
yr = {0, 0.6785245628862672};

{x, y} = {0.128531, 0.0765588}

ndiv = 20
dr = Min[{(yr[[2]] - yr[[1]])/ndiv, (xr[[2]] - xr[[1]])/ndiv}];
grid = Flatten[Table[{x, y}, 
       {x, xr[[1]], xr[[2]], dr}, {y, yr[[1]], yr[[2]], dr}], 1];
shift = {x, y} - Nearest[grid, {x, y}][[1]];
        (*To make a point coincide with x,y*)
grid = Table[(g + shift), {g, grid}];

ListPlot[{{{x, y}}, grid}, PlotStyle -> {{PointSize[Large], Red}, Black}]

enter image description here

$\endgroup$
1
  • $\begingroup$ Thank you Sumit! $\endgroup$ – Ghady Jan 16 '20 at 17:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.