Flip mesh from face normal

Hello, i need to know how to flip an object basing on a face of the objects itself.
I mean, to flip an object around the x axis i can do this:

object3D.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));

But suppose i have a cone and i want to flip it referencing the plane based on a diagunal face how can i do it?
I hope i explained everything clearly.
Thank you very much in advance!

iirc, using negative scale to mirror a mesh inverts the normals. you can hide this with DoubleSide, but it costs you in performance.

  1. move the object such that the center of the face is at 0,0,0
  2. take any vector perpendicular to the face normal and do a PI rotation around that axis
  3. move the object back to its original location (invert first move)

or you could skip the first move and the ending move is 2x the vector connecting the center of the face to the origin (which is also collinear with the face normal).

Thank you for your reply. I tried with your solution but it doesn’t seem to work.
I put here two screenshot: in the first you can see the wrong result. The face selected is that pointed by the purple arrow. In the second instead you can see the result i would like to obtain.
I hope this explains clearly my situation. Thank you again for any help!

Wrong:
Schermata 2022-02-01 alle 13.04.56

What i would like to obtain:
Schermata 2022-02-01 alle 13.04.23

understood. this should have solved for that case.

face normals are in the coordinate space of the mesh’s geometry. if the mesh is in a group that has been translated, rotated, or scale, then this gets a little bit more complicated.