differential geometry – Proof of smoothness of the Exponential map at a point of a complete regular surface in Euclidean space

Suppose S is a regular, connected surface in Euclidean space and $d_{s}$ is the intrinsic metric on S. When (S,d) is complete, we know that for each geodesic $gamma:Jrightarrow S$ (where J is any interval) there exists a unique geodesic $eta:mathbb{R}rightarrow S$ which is an extension of $gamma$.

If $p$ is any point of S, it is shown in do Carmo (page 284) that if a sufficiently small $win T_{p}S$ is chosen, the geodesic $gamma$ with initial state $gamma(0)=p, gamma'(0)=w$ is well defined at $t=1$. The symbol exp$_{p}(w)$ is made to denote the point $gamma(1)in S$. It is then shown (page 285) that exp$_{p}$ can be made into a smooth map on a sufficiently small neighbourhood of $0in T_{p}S$. This truth depends on the theorem of solutions of systems of ODE’s which says that the solution depends smoothly on initial conditions.

By what I wrote above, when S is complete, $p$ is any point and $w$ any tangent vector to S at $p$, the symbol exp$_{p}(w)$ is well defined, but how can we show smoothness of exp$_{p}$ on all of $T_{p}S$? Am I missing something elementary here? We know it is smooth around $0$, but the proof depended on covering $p$ with a chart and applying the theorem from analysis. It seems we cannot argue this way in the general case.

In do Carmo I did not see this technical question discussed, and neither in Tapp.

reference request – Hausdorff Dimension e Surface Measure

Could someone please indicate me some reference that contains the proof of the following theorem?

Below $mathcal{H}^n$ denotes the $n$-dimensional Hausdorff outer measure in $mathbb{R}^n$.

Theorem: Let $Msubset mathbb{R}^N$ be a $k$-dimensional manifold of class $C^1$, $1leq kleq N$.

  1. Let $varphi$ be a local chart, that is, $varphi:Ato M$ is a function of class $C^1$ for some open set $A subset mathbb{R}^k$ such that $nabla varphi $ has maximum rank $k$ in $A$. Define $g_{ij}:=frac{partial varphi }{partial y_i}!cdot !frac{partial varphi }{partial y_j}$, where $cdot$ is the inner product in $mathbb{R}^N$. Then $varphi (A)$ has Hausdorff dimension $k$ and

$$mathcal{H}^k(varphi(A))=int_A sqrt{det g_{ij}(y)}dy$$

  1. $M$ has Hausdorff dimension $k$ and that $mathcal{H}^k(M)$ is the standard surface measure of $M$.

I found this theorem in the file “Measure and Integration” (pg 9).

I searched for some reference that contains the proof of the above theorem but couldn’t find it.

I am posting this request here since a similar question on Mathematics Stack Exchange didn’t receive an answer!

bullet physics – How to move a player on a sphere surface using Ammo.js and Three,js

I am moving a rigidbody (the character) on the surface of a sphere, like what is described here.

I am facing the following issue that I am having hard time to solve:
After moving the character, it starts spinning really slightly around it’s Y axis.

As a side note, I am using Ammo.js which is a javascript/webassembly port of Bullet 2.82, but this has no impact on the problem.

To “stick” the player (a dynamic rigidbody with a cylinder shape) to the sphere (a static rigid body with a sphere shape), here is the code, called on each game loop iteration:

function applyAttraction() {
    let sphereOrigin = this.body.getWorldTransform().getOrigin();
    let characterOrigin = this._characterEntity.body.getWorldTransform().getOrigin();

    // compute and apply sphere gravity to character body
    let sphereAttractionForce = new ammo.btVector3(
      characterOrigin.x() - sphereOrigin.x(),
      characterOrigin.y() - sphereOrigin.y(),
      characterOrigin.z() - sphereOrigin.z()
    );
    sphereAttractionForce.normalize();
    sphereAttractionForce.op_mul(gravity);
    this._characterEntity.body.applyForce(sphereAttractionForce, ammo.btVector3(0, 0, 0));

    // align character up with sphere origin
    const gravityDirection = bt2ThreeVec3(sphereAttractionForce).normalize().multiplyScalar(-1);

    // extract up axis of character transform basis
    let characterUp = new THREE.Vector3();
    this._characterEntity.graphic.matrixWorld.extractBasis(
      new THREE.Vector3(),
      characterUp,
      new THREE.Vector3()
    );

    // apply rotation to align up with gravity vector
    let verticalAlignmentRotation = new Quaternion()
      .setFromUnitVectors(characterUp, gravityDirection)
      .multiply(bt2ThreeQuat(this._characterEntity.body.getWorldTransform().getRotation()));

    this._characterEntity.body.getWorldTransform().setRotation(three2BtQuat(verticalAlignmentRotation));
  }

And to move the character on the sphere (I removed the code dealing with the mouse controlled orientation since it is irrelevant to track down the problem). This code is also called on every game loop iteration:

let scalingFactor = 0.02;
    let moveX = inputController.getMoveX();
    let moveZ = inputController.getMoveZ();

    if (moveX === 0 && moveZ === 0) return;

    let movement = new THREE.Vector3(moveX, 0, moveZ).normalize();
    movement.multiplyScalar(scalingFactor);
    let wantedWorldPos = this.graphic.localToWorld(movement);
    this.body
      .getWorldTransform()
      .setOrigin(new ammo.btVector3(wantedWorldPos.x, wantedWorldPos.y, wantedWorldPos.z));

In plain (approximative) English, what I am doing:

  1. Get the direction from the player position to the center of the sphere
  2. Apply a force using that vector: this._characterEntity.body.applyForce(sphereAttractionForce, ammo.btVector3(0, 0, 0));
  3. Align the player Up with the gravity direction, to do so I:
    1. normalize and “flip” gravity vector direction
    2. extract character up vector and compute the quaternion which give the rotation to align this up vector with the gravity vector
    3. compute the new player orientation by applying quaternion from 3.b to it’s current orientation
  4. Apply movement (from keyboard inputs), in details:
    1. get a vector resulting from the requested movement alongside x and z axis
    2. convert this vector from player local basis to world basis: this.graphic.localToWorld(movement);
    3. set the new transform origin with this new vector

The project may be seen here (with the spinning issue I am describing). You may need to move a bit on the sphere (with WASD keys).

dnd 5e – Can Tentacle of the Deeps be cast on the surface of water?

The Warlock subclass The Fathomless has an ability called Tentacle of the Deeps that reads:

You can magically summon a spectral tentacle that strikes at your
foes. As a bonus action, you create a 10-foot-long tentacle at a point
you can see within 60 feet of you. The tentacle lasts for 1 minute or
until you use this feature to create another tentacle. When you create
the tentacle, you can make a melee spell attack against one creature
within 10 feet of it. On a hit, the target takes 1d8 cold damage, and
its speed is reduced by 10 feet until the start of your next turn.
When you reach 10th level in this class, the damage increases to 2d8.
As a bonus action on your turn, you can move the tentacle up to 30
feet and repeat the attack. You can summon the tentacle a number of
times equal to your proficiency bonus, and you regain all expended
uses when you finish a long rest.

Would that be able to stand on the surface of water?

dnd 5e – How much time would it take for a plesiosaurus to get enough breath at the surface?

I found some information about whales and dolphins which may suffice.

How do whales and dolphins breathe?

It only takes them a fraction of a second to take another breath. However, as their nostrils are actually a blowhole and the plesiosaurus would have to lift it’s whole head out of the water it would take fractionally longer.

As a round in 5th edition combat equates to 6 seconds, I would suggest it can do this as a bonus action.

spells – Does Detect Magic make an Arcane Mark placed on an invisible surface glow?

Signs point to “yes” with some wiggle room for GM interpretation.

The first hurdle: can Arcane Mark be cast on a creature?

If an arcane mark is placed on a living being, …

So, yes.

The second hurdle: can it be cast on an unwilling creature?

Range: touch

… and, there’s no “Target” field, so the spell doesn’t specify that it can’t be cast on an unwilling creature (though, a touch attack is likely required to do so).

The third hurdle: does it matter how the Mark is made invisible?

An Arcane Mark itself “can be visible or invisible”, and “(i)f an invisible mark is made, a detect magic spell causes it to glow and be visible”. So, an Arcane Mark which is created as an invisible Mark is definitely revealed by Detect Magic. But, what about a mark which is made on something which is later affected by Invisibility (or its variants)?

Fortunately, Invisibility answers that question:

Light, however, never becomes invisible, although a source of light can become so (thus, the effect is that of a light with no visible source).

Since the Arcane Mark explicitly glows, it’s a light source; since it’s a light source, the mark itself is visible-ish (at the very least, the square it’s in should be readily detectible, in the general case).

So, where does GM interpretation come in?

First: since Arcane Mark doesn’t explicitly state that it can be cast on an unwilling target, the GM could rule that it can’t be. This is something that the GM should be freely willing to talk about before the tactic is tried, of course.

Second: if the Mark is somewhere that the target can cover it (with a cloak or something), the GM could rule that the target can cover the mark, hiding the light (this GM remembers this being a valid option, but can’t find rules support at the moment; also, in fairness, this rule should apply to light sources generally: players should be able to close an invisible bullseye lantern or hide an everburning torch in their cloak to prevent foes from seeing the light source at the cost of not having it available themselves).

Third: the GM could rule that the area is bright enough that determining which square the target is in requires a perception check (simulationist real-world example: telling if a non-OLED LCD/LED display is on by seeing the … “brighter shade of black”, I guess … in a bright room vs. a dark room).

For what it’s worth, this GM thinks the tactic is clever. Further, since there’s a real cost to using it (it burns an action, which is the most valuable currency in the game), I wouldn’t be prone to nerfing it via either of the “interpretation” options above. However, I would have some canny foes who have had time and reason to watch the PCs in action (or to have received reports) use the tactic against them or be otherwise prepared for it (eg., by preparing – and preparing for – Darkness).

general topology – How come every compact connected surface admits a presentation in which all vertices are identified with a single point?

I’ve been stuck for a while now on this step of the classification theorem proof in Introduction to Topological Manifolds by John Lee:

STEP 4: M admits a presentation in which all vertices are identified to a single
point.

Where M is a connected compact surface.

I don’t understand how could this be true. Take a (bounded) cylinder for example. It has the following presentation: $aba^{-1}c$. I don’t see how all vertices could be mapped to the same point, that could only happen if we turn it into a torus (i.e. identify b and c together). The key step in the above proof seems to be that he’s assuming that for every edge $b$ there is another edge $b$ or $b^{-1}$ with which it is identified; but again: that’s not true in the case of the cylinder, not all edges are identified. The same problem happens if we consider the presentation of a mobius band for example and other surfaces as well. I’ve rechecked the definitions several times to see if I was missing something basic but I’m not able to see where I went wrong so I would appreciate any help on this.